rtmp: Always call rtmp_close() on rtmp_open() failure

Prevent possible memory leaks.

Connect to nginx and request a non-existent resource to
trigger the issue.

CC: libav-stable@libav.org

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Uwe L. Korn <uwelk@xhochy.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
pull/89/head
Alexander Drozdov 10 years ago committed by Luca Barbato
parent fc1eda543c
commit 0034314a69
  1. 7
      libavformat/rtmpproto.c

@ -2817,11 +2817,10 @@ reconnect:
} }
if (rt->is_input) { if (rt->is_input) {
int err;
// generate FLV header for demuxer // generate FLV header for demuxer
rt->flv_size = 13; rt->flv_size = 13;
if ((err = av_reallocp(&rt->flv_data, rt->flv_size)) < 0) if ((ret = av_reallocp(&rt->flv_data, rt->flv_size)) < 0)
return err; goto fail;
rt->flv_off = 0; rt->flv_off = 0;
memcpy(rt->flv_data, "FLV\1\0\0\0\0\011\0\0\0\0", rt->flv_size); memcpy(rt->flv_data, "FLV\1\0\0\0\0\011\0\0\0\0", rt->flv_size);
@ -2832,7 +2831,7 @@ reconnect:
// audio or video packet arrives. // audio or video packet arrives.
while (!rt->has_audio && !rt->has_video && !rt->received_metadata) { while (!rt->has_audio && !rt->has_video && !rt->received_metadata) {
if ((ret = get_packet(s, 0)) < 0) if ((ret = get_packet(s, 0)) < 0)
return ret; goto fail;
} }
// Either after we have read the metadata or (if there is none) the // Either after we have read the metadata or (if there is none) the

Loading…
Cancel
Save