check for zero'd rc

pull/1038/head
Jeff Becker 4 years ago
parent d9297a4907
commit a17b5f25b5
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05

@ -43,7 +43,11 @@ namespace llarp
found = rc; found = rc;
} }
valuesFound.clear(); valuesFound.clear();
valuesFound.emplace_back(found); if(not found.pubkey.IsZero())
{
valuesFound.resize(1);
valuesFound[0] = found;
}
} }
routing::DHTMessage msg; routing::DHTMessage msg;
msg.M.emplace_back(new GotRouterMessage(parent->OurKey(), whoasked.txid, msg.M.emplace_back(new GotRouterMessage(parent->OurKey(), whoasked.txid,

@ -167,7 +167,12 @@ namespace llarp
return false; return false;
} }
RouterContact found; RouterContact found;
const Key_t k{K}; if(K.IsZero())
{
llarp::LogError("invalid FRM from ", From, "K is zero");
return false;
}
const Key_t k(K);
if(exploritory) if(exploritory)
return dht.HandleExploritoryRouterLookup(From, txid, K, replies); return dht.HandleExploritoryRouterLookup(From, txid, K, replies);
if(!dht.GetRouter()->ConnectionToRouterAllowed(K)) if(!dht.GetRouter()->ConnectionToRouterAllowed(K))

@ -113,6 +113,8 @@ namespace llarp
LogDebug("got ", R.size(), " results in GRM for lookup"); LogDebug("got ", R.size(), " results in GRM for lookup");
if(R.size() == 0) if(R.size() == 0)
dht.pendingRouterLookups().NotFound(owner, K); dht.pendingRouterLookups().NotFound(owner, K);
else if(R[0].pubkey.IsZero())
return false;
else else
dht.pendingRouterLookups().Found(owner, R[0].pubkey, R); dht.pendingRouterLookups().Found(owner, R[0].pubkey, R);
return true; return true;

@ -733,11 +733,11 @@ namespace llarp
{ {
if(msg->R.size()) if(msg->R.size())
{ {
auto* job = new llarp_async_verify_rc; llarp_async_verify_rc* job = new llarp_async_verify_rc();
job->nodedb = Router()->nodedb(); job->nodedb = Router()->nodedb();
job->cryptoworker = Router()->threadpool(); job->cryptoworker = Router()->threadpool();
job->diskworker = Router()->diskworker(); job->diskworker = Router()->diskworker();
job->logic = Router()->logic(); job->logic = Router()->logic();
job->hook = std::bind(&Endpoint::HandleVerifyGotRouter, this, msg, job->hook = std::bind(&Endpoint::HandleVerifyGotRouter, this, msg,
std::placeholders::_1); std::placeholders::_1);
job->rc = msg->R[0]; job->rc = msg->R[0];

Loading…
Cancel
Save