Dear Sir:<br><br>In RTPInterface::handleRead(), the following code may cause vulnerabilities due to type inconsistency:<br><br>Boolean RTPInterface::handleRead(unsigned char* buffer,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned bufferMaxSize,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned&amp; bytesRead,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct sockaddr_in&amp; fromAddress) {<br><br>......<br><br>&nbsp;&nbsp;&nbsp; unsigned curBytesRead;<br>&nbsp;&nbsp;&nbsp; while ((curBytesRead = readSocket(envir(), fNextTCPReadStreamSocketNum,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;buffer[bytesRead], curBytesToRead,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fromAddress)) &gt; 0) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bytesRead += curBytesRead;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (bytesRead &gt;= totBytesToRead) break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; curBytesToRead -= curBytesRead;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; if (curBytesRead &lt;= 0) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bytesRead = 0;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; readSuccess = False;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RTPOverTCP_OK = False; // HACK #####<br>&nbsp;&nbsp;&nbsp; } else {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; readSuccess = True;<br>&nbsp;&nbsp;&nbsp; }<br><br>.......<br><br>}<br><br>Here, ReadSocket() returns int while curBytesRead is declared unsigned. If ReadSocket() returns -1, the above code may cause problem.<br>
<br>BR.<br>Brain Lai<br>