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,执行后出现异常。
本文分析了NALDecoder程序中处理超过1400字节NALU时出现的异常情况,具体讨论了当NALU长度不能被1400整除时memcpy函数参数错误导致的问题。
2872

被折叠的 条评论
为什么被折叠?



