clear errno and log invalid data

pull/365/head
Jeff Becker 5 years ago
parent 9e9818febe
commit 86098b198f
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05

@ -458,7 +458,10 @@ namespace llarp
auto& itr = m_BlockingWriteQueue->front(); auto& itr = m_BlockingWriteQueue->front();
ssize_t result = do_write(itr.buf, itr.bufsz); ssize_t result = do_write(itr.buf, itr.bufsz);
if(result == -1) if(result == -1)
{
errno = 0;
return; return;
}
ssize_t dlt = itr.bufsz - result; ssize_t dlt = itr.bufsz - result;
if(dlt > 0) if(dlt > 0)
{ {
@ -601,7 +604,7 @@ namespace llarp
if(_conn->error) if(_conn->error)
_conn->error(_conn); _conn->error(_conn);
} }
errno = 0;
} }
virtual ssize_t virtual ssize_t

@ -70,17 +70,20 @@ namespace llarp
PubkeyList_t keys; PubkeyList_t keys;
if(!result.IsObject()) if(!result.IsObject())
{ {
LogWarn("Invalid result: not an object");
handler({}, false); handler({}, false);
return false; return false;
} }
const auto itr = result.FindMember("keys"); const auto itr = result.FindMember("keys");
if(itr == result.MemberEnd()) if(itr == result.MemberEnd())
{ {
LogWarn("Invalid result: no keys member");
handler({}, false); handler({}, false);
return false; return false;
} }
if(!itr->value.IsArray()) if(!itr->value.IsArray())
{ {
LogWarn("Invalid result: keys is not an array");
handler({}, false); handler({}, false);
return false; return false;
} }
@ -91,12 +94,9 @@ namespace llarp
{ {
keys.emplace_back(); keys.emplace_back();
std::string str = key_itr->GetString(); std::string str = key_itr->GetString();
if(str.size() != Base32DecodeSize(keys.back().size())) if(!Base32Decode(str, keys.back()))
{
keys.pop_back();
}
else if(!Base32Decode(str, keys.back()))
{ {
LogWarn("Invalid key: ", str);
keys.pop_back(); keys.pop_back();
} }
} }

Loading…
Cancel
Save