diff options
author | Luca Barbato <lu_zero@gentoo.org> | 2015-11-01 04:07:43 +0100 |
---|---|---|
committer | Luca Barbato <lu_zero@gentoo.org> | 2015-11-02 16:26:37 +0100 |
commit | 4dfbc7a7559ccab666a8fd39de4224eb4b02c768 (patch) | |
tree | 858be85688dd1887dd2f275023004da8751e7ac3 /libavformat | |
parent | 60f50374f1955442dc987abc4a6c61c2109620c2 (diff) | |
download | ffmpeg-4dfbc7a7559ccab666a8fd39de4224eb4b02c768.tar.gz |
msnwc_tcp: Correctly report failure
And prevent a memory leak
CC: libav-stable@libav.org
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/msnwc_tcp.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libavformat/msnwc_tcp.c b/libavformat/msnwc_tcp.c index b6d30feb9d..afdcac4205 100644 --- a/libavformat/msnwc_tcp.c +++ b/libavformat/msnwc_tcp.c @@ -104,6 +104,7 @@ static int msnwc_tcp_read_packet(AVFormatContext *ctx, AVPacket *pkt) AVIOContext *pb = ctx->pb; uint16_t keyframe; uint32_t size, timestamp; + int ret; avio_skip(pb, 1); /* one byte has been read ahead */ avio_skip(pb, 2); @@ -114,8 +115,11 @@ static int msnwc_tcp_read_packet(AVFormatContext *ctx, AVPacket *pkt) avio_skip(pb, 4); timestamp = avio_rl32(pb); - if(!size || av_get_packet(pb, pkt, size) != size) - return -1; + if (!size) + return AVERROR_INVALIDDATA; + + if ((ret = av_get_packet(pb, pkt, size)) < 0) + return ret; avio_skip(pb, 1); /* Read ahead one byte of struct size like read_header */ |