Suppressed uninitialized memory read.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1066 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
csoler 2009-03-09 14:10:24 +00:00
parent 532148c433
commit 24c841ffe3

View File

@ -85,6 +85,8 @@ pqistreamer::pqistreamer(RsSerialiser *rss, std::string id, BinInterface *bio_in
exit(1); exit(1);
} }
failed_read_attempts = 0 ; // reset failed read, as no packet is still read.
return; return;
} }
@ -440,13 +442,13 @@ int pqistreamer::handleoutgoing()
// write packet. // write packet.
len = getRsItemSize(pkt_wpending); len = getRsItemSize(pkt_wpending);
out << "Sending Out Pkt of size " << len << " !"; // std::cout << "Sending Out Pkt of size " << len << " !" << std::endl ;
if (len != (ss = bio->senddata(pkt_wpending, len))) if (len != (ss = bio->senddata(pkt_wpending, len)))
{ {
out << "Problems with Send Data! (only " << ss << " bytes sent" << ", total pkt size=" << len ; out << "Problems with Send Data! (only " << ss << " bytes sent" << ", total pkt size=" << len ;
out << std::endl; out << std::endl;
std::cerr << out.str() ; // std::cerr << out.str() ;
pqioutput(PQL_DEBUG_BASIC, pqistreamerzone, out.str()); pqioutput(PQL_DEBUG_BASIC, pqistreamerzone, out.str());
outSentBytes(sentbytes); outSentBytes(sentbytes);
@ -455,7 +457,7 @@ int pqistreamer::handleoutgoing()
return -1; return -1;
} }
out << " Success!" << ", sent " << len << " bytes" << std::endl; // out << " Success!" << ", sent " << len << " bytes" << std::endl;
// std::cerr << out.str() ; // std::cerr << out.str() ;
pqioutput(PQL_DEBUG_BASIC, pqistreamerzone, out.str()); pqioutput(PQL_DEBUG_BASIC, pqistreamerzone, out.str());
@ -669,7 +671,7 @@ int pqistreamer::handleincoming()
int pqistreamer::handleincoming() int pqistreamer::handleincoming()
{ {
int readbytes = 0; int readbytes = 0;
static const int max_failed_read_attempts = 60 ; static const int max_failed_read_attempts = 100 ;
{ {
std::ostringstream out; std::ostringstream out;
@ -735,6 +737,7 @@ start_packet_read:
readbytes += blen; readbytes += blen;
reading_state = reading_state_packet_started ; reading_state = reading_state_packet_started ;
failed_read_attempts = 0 ; // reset failed read, as the packet has been totally read.
} }
continue_packet: continue_packet:
{ {
@ -760,6 +763,11 @@ continue_packet:
msgout << "\n"; msgout << "\n";
msgout << "(M:" << maxlen << " B:" << blen << " E:" << extralen << ")\n"; msgout << "(M:" << maxlen << " B:" << blen << " E:" << extralen << ")\n";
msgout << "\n"; msgout << "\n";
msgout << "block = "
<< (int)(((unsigned char*)block)[0]) << " "
<< (int)(((unsigned char*)block)[1]) << " "
<< (int)(((unsigned char*)block)[2]) << " "
<< (int)(((unsigned char*)block)[3]) << "\n" ;
msgout << "\n"; msgout << "\n";
msgout << "Please get your friends to upgrade to the latest version"; msgout << "Please get your friends to upgrade to the latest version";
msgout << "\n"; msgout << "\n";
@ -785,7 +793,13 @@ continue_packet:
void *extradata = (void *) (((char *) block) + blen); void *extradata = (void *) (((char *) block) + blen);
int tmplen ; int tmplen ;
memset( extradata,0,extralen ) ; // for checking later
if (extralen != (tmplen = bio->readdata(extradata, extralen))) if (extralen != (tmplen = bio->readdata(extradata, extralen)))
{
if(tmplen > 0)
std::cerr << "Incomplete packet read ! This is a real problem ;-)" << std::endl ;
if(++failed_read_attempts > max_failed_read_attempts) if(++failed_read_attempts > max_failed_read_attempts)
{ {
std::ostringstream out; std::ostringstream out;
@ -827,6 +841,7 @@ continue_packet:
else else
return 0 ; // this is just a SSL_WANT_READ error. Don't panic, we'll re-try the read soon. return 0 ; // this is just a SSL_WANT_READ error. Don't panic, we'll re-try the read soon.
// we assume readdata() returned either -1 or the complete read size. // we assume readdata() returned either -1 or the complete read size.
}
readbytes += extralen; readbytes += extralen;
} }
@ -852,6 +867,7 @@ continue_packet:
pqioutput(PQL_ALERT, pqistreamerzone, "Failed to handle Packet!"); pqioutput(PQL_ALERT, pqistreamerzone, "Failed to handle Packet!");
reading_state = reading_state_initial ; // restart at state 1. reading_state = reading_state_initial ; // restart at state 1.
failed_read_attempts = 0 ; // reset failed read, as the packet has been totally read.
} }
if(maxin > readbytes && bio->moretoread()) if(maxin > readbytes && bio->moretoread())