summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2011-05-25 19:08:29 +0300
committerMartin Storsjö <martin@martin.st>2011-05-25 22:00:42 +0300
commit271c869cc3285dac2b6f2663a87c70bf3ba2b04f (patch)
tree59ef573dc2fe17b41f8e36989b4c141353ab9f04 /libavformat
parent67540af7baa5c4064753861be217ac8f7c8df997 (diff)
rtmp: Don't try to do av_malloc(0)
Some received packets can have size 0. The return value from av_malloc(0) may be NULL, which is ok if the size was 0. On OS X, however, the returned pointer is non-null but leads to crashes when trying to free it. Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/rtmppkt.c2
-rw-r--r--libavformat/rtmpproto.c2
2 files changed, 3 insertions, 1 deletions
diff --git a/libavformat/rtmppkt.c b/libavformat/rtmppkt.c
index 63b0628799..93790eb525 100644
--- a/libavformat/rtmppkt.c
+++ b/libavformat/rtmppkt.c
@@ -233,9 +233,11 @@ int ff_rtmp_packet_write(URLContext *h, RTMPPacket *pkt,
int ff_rtmp_packet_create(RTMPPacket *pkt, int channel_id, RTMPPacketType type,
int timestamp, int size)
{
+ if (size) {
pkt->data = av_malloc(size);
if (!pkt->data)
return AVERROR(ENOMEM);
+ }
pkt->data_size = size;
pkt->channel_id = channel_id;
pkt->type = type;
diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c
index 70e4b142d6..f499bd3b71 100644
--- a/libavformat/rtmpproto.c
+++ b/libavformat/rtmpproto.c
@@ -683,7 +683,7 @@ static int get_packet(URLContext *s, int for_header)
return AVERROR_EOF;
for (;;) {
- RTMPPacket rpkt;
+ RTMPPacket rpkt = { 0 };
if ((ret = ff_rtmp_packet_read(rt->stream, &rpkt,
rt->chunk_size, rt->prev_pkt[0])) <= 0) {
if (ret == 0) {