On Thu, Jul 26, 2012 at 7:27 PM, Martin Storsjö <[email protected]> wrote:
> On Thu, 26 Jul 2012, Samuel Pitoiset wrote:
>
>> ---
>> libavformat/rtmpproto.c | 6 ++++++
>> 1 file changed, 6 insertions(+)
>>
>> diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c
>> index a2efe38..a32c4a9 100644
>> --- a/libavformat/rtmpproto.c
>> +++ b/libavformat/rtmpproto.c
>> @@ -915,6 +915,12 @@ static int handle_ping(URLContext *s, RTMPPacket
>> *pkt)
>>
>>     t = AV_RB16(pkt->data);
>>     if (t == 6) {
>> +        if (pkt->data_size < 6) {
>> +            av_log(s, AV_LOG_ERROR, "Too short ping packet (%d)\n",
>> +                   pkt->data_size);
>> +            return AVERROR_INVALIDDATA;
>> +        }
>> +
>
>
> The commit and warning messages are good this time, however the code itself
> is wrong in two different ways. Where did you get the number 6, and why do
> you do the check here?

I played a stream using a FMS and I used Wireshark in order to find
the size of a ping packet.

I do the check here because that handle function can received other
packets like a swfverification request, for example. And if this
packet is not 6 bytes long a *wrong* error code is returned.

Btw, I'll introduce an other case (in the near future) '} else if (t
== 0x1A) {' in order to handle swfverification packets.

-- 
Best regards,
Samuel Pitoiset.
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to