In RTCP.cpp,<br><br>SDESItem::SDESItem(unsigned char tag, unsigned char const* value) {<br>  unsigned length = strlen((char const*)value);<br>  if (length &gt; 511) length = 511;<br><br>  fData[0] = tag;<br>  fData[1] = (unsigned char)length;<br>
  memmove(&amp;fData[2], value, length);<br><br>  // Pad the trailing bytes to a 4-byte boundary:<br>  while ((length)%4 &gt; 0) fData[2 + length++] = &#39;\0&#39;;<br>}<br><br>length is 511 bytes, and the additional padding at the end tacks on up to 3 more bytes.  However, the buffer to which memory is being written to in RTCP.hh is declared as:<br>
<br>unsigned char fData[2 + 0xFF]; // first 2 bytes are tag and length<br><br>...which is only 257 bytes.  It needs to be at least 515 bytes in length (511+ 2 is 513; padded to before the nearest 4 byte boundary bumps that up to 515).  So that line should change to:<br>
<br>unsigned char fData[2 + 513]; // first 2 bytes are tag and length<br><br>Either that, or the upper bound on &quot;length&quot; in the constructor needs to be shortened. (to work with 2 + 0xFF, length would need to be no greater than 251)<br>
<br>Thanks,<br><br>Jeremy<br>