This one removed:

>> -    if (!pkt->size)
>> -        return av_new_packet(pkt, grow_by);

pkt->size can be 0 but reference-counted buf allocated. av_new_packet
leads to memory leak in this case. (FIXME?)

>> -    if ((unsigned)grow_by >
>> -        INT_MAX - (pkt->size + AV_INPUT_BUFFER_PADDING_SIZE))
>> -        return -1;
>>
>>      new_size = pkt->size + grow_by + AV_INPUT_BUFFER_PADDING_SIZE;
>
> you remove the overflow check, which makes this undefined behavior
> (note that this is also so when the value is not used)
>

This check is not removed. It duplicated in two if branches:

if (pkt->buf) {
+        int data_offset = pkt->data - pkt->buf->data;
+        if ((unsigned)grow_by >
+            INT_MAX - (pkt->size + data_offset + AV_INPUT_BUFFER_PADDING_SIZE))
+            return -1;
...
} else {
+        if ((unsigned)grow_by >
+            INT_MAX - (pkt->size + AV_INPUT_BUFFER_PADDING_SIZE))
+            return -1;
...
}

Please specify more detailed if I missed something. Thanks!
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to