Browse Source

Fixed division by zero due to thread race condition.

pull/1945/head
Chad Fraleigh 1 year ago
parent
commit
638e9b4d7f
No known key found for this signature in database
GPG Key ID: 2415C39758458A8F
  1. 4
      libi2pd/NetDb.cpp
  2. 4
      libi2pd/Transports.cpp

4
libi2pd/NetDb.cpp

@ -1253,7 +1253,9 @@ namespace data
uint16_t inds[3]; uint16_t inds[3];
RAND_bytes ((uint8_t *)inds, sizeof (inds)); RAND_bytes ((uint8_t *)inds, sizeof (inds));
std::unique_lock<std::mutex> l(m_RouterInfosMutex); std::unique_lock<std::mutex> l(m_RouterInfosMutex);
inds[0] %= m_RouterInfos.size (); auto count = m_RouterInfos.size ();
if(count == 0) return nullptr;
inds[0] %= count;
auto it = m_RouterInfos.begin (); auto it = m_RouterInfos.begin ();
std::advance (it, inds[0]); std::advance (it, inds[0]);
// try random router // try random router

4
libi2pd/Transports.cpp

@ -861,7 +861,9 @@ namespace transport
uint16_t inds[3]; uint16_t inds[3];
RAND_bytes ((uint8_t *)inds, sizeof (inds)); RAND_bytes ((uint8_t *)inds, sizeof (inds));
std::unique_lock<std::mutex> l(m_PeersMutex); std::unique_lock<std::mutex> l(m_PeersMutex);
inds[0] %= m_Peers.size (); auto count = m_Peers.size ();
if(count == 0) return nullptr;
inds[0] %= count;
auto it = m_Peers.begin (); auto it = m_Peers.begin ();
std::advance (it, inds[0]); std::advance (it, inds[0]);
// try random peer // try random peer

Loading…
Cancel
Save