NALDecoder是在网上很容易搜到的一个h.264的NAL层的解码小程序。其中有如下一段代码:
else if(n->len>1400)
{
//得到该nalu需要用多少长度为1400字节的RTP包来发送
int k=0,l=0;
k=n->len/1400;//需要k个1400字节的RTP包
l=n->len%1400;//最后一个RTP包的需要装载的字节数
上面最后一行中当n->len被1400整除时l为0。在后续的代码中用到了l:
memcpy(nalu_payload,n->buf+t*1400+1,l-1);//将nalu最后剩余的l-1(去掉了一个字节的NALU头)字节内容写入sendbuf[14]开始的字符串。
此时l-1为-1,memcpy把它用作0xFFFFFFFF,执行后出现异常。