mirror of https://git.ffmpeg.org/ffmpeg.git
rtpdec: Forward the memory failure
And avoid a memory leak. Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
This commit is contained in:
parent
1ec611a102
commit
22cc57da64
|
@ -684,7 +684,7 @@ void ff_rtp_reset_packet_queue(RTPDemuxContext *s)
|
||||||
s->prev_ret = 0;
|
s->prev_ret = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void enqueue_packet(RTPDemuxContext *s, uint8_t *buf, int len)
|
static int enqueue_packet(RTPDemuxContext *s, uint8_t *buf, int len)
|
||||||
{
|
{
|
||||||
uint16_t seq = AV_RB16(buf + 2);
|
uint16_t seq = AV_RB16(buf + 2);
|
||||||
RTPPacket **cur = &s->queue, *packet;
|
RTPPacket **cur = &s->queue, *packet;
|
||||||
|
@ -699,7 +699,7 @@ static void enqueue_packet(RTPDemuxContext *s, uint8_t *buf, int len)
|
||||||
|
|
||||||
packet = av_mallocz(sizeof(*packet));
|
packet = av_mallocz(sizeof(*packet));
|
||||||
if (!packet)
|
if (!packet)
|
||||||
return;
|
return AVERROR(ENOMEM);
|
||||||
packet->recvtime = av_gettime_relative();
|
packet->recvtime = av_gettime_relative();
|
||||||
packet->seq = seq;
|
packet->seq = seq;
|
||||||
packet->len = len;
|
packet->len = len;
|
||||||
|
@ -707,6 +707,8 @@ static void enqueue_packet(RTPDemuxContext *s, uint8_t *buf, int len)
|
||||||
packet->next = *cur;
|
packet->next = *cur;
|
||||||
*cur = packet;
|
*cur = packet;
|
||||||
s->queue_len++;
|
s->queue_len++;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int has_next_packet(RTPDemuxContext *s)
|
static int has_next_packet(RTPDemuxContext *s)
|
||||||
|
@ -804,7 +806,9 @@ static int rtp_parse_one_packet(RTPDemuxContext *s, AVPacket *pkt,
|
||||||
return rv;
|
return rv;
|
||||||
} else {
|
} else {
|
||||||
/* Still missing some packet, enqueue this one. */
|
/* Still missing some packet, enqueue this one. */
|
||||||
enqueue_packet(s, buf, len);
|
rv = enqueue_packet(s, buf, len);
|
||||||
|
if (rv < 0)
|
||||||
|
return rv;
|
||||||
*bufptr = NULL;
|
*bufptr = NULL;
|
||||||
/* Return the first enqueued packet if the queue is full,
|
/* Return the first enqueued packet if the queue is full,
|
||||||
* even if we're missing something */
|
* even if we're missing something */
|
||||||
|
|
Loading…
Reference in New Issue