Fix leaks in the AAC RTP depacketizer

Originally committed as revision 22804 to svn://svn.ffmpeg.org/ffmpeg/trunk
release/0.6
Martin Storsjö 15 years ago
parent 1da1e1933f
commit 0e4b185a8d
  1. 6
      libavformat/rtpdec.c
  2. 1
      libavformat/rtpdec.h

@ -400,7 +400,11 @@ static int rtp_parse_mp4_au(RTPDemuxContext *s, const uint8_t *buf)
return -1; return -1;
infos->nb_au_headers = au_headers_length / au_header_size; infos->nb_au_headers = au_headers_length / au_header_size;
if (!infos->au_headers || infos->au_headers_allocated < infos->nb_au_headers) {
av_free(infos->au_headers);
infos->au_headers = av_malloc(sizeof(struct AUHeaders) * infos->nb_au_headers); infos->au_headers = av_malloc(sizeof(struct AUHeaders) * infos->nb_au_headers);
infos->au_headers_allocated = infos->nb_au_headers;
}
/* XXX: We handle multiple AU Section as only one (need to fix this for interleaving) /* XXX: We handle multiple AU Section as only one (need to fix this for interleaving)
In my test, the FAAD decoder does not behave correctly when sending each AU one by one In my test, the FAAD decoder does not behave correctly when sending each AU one by one
@ -599,6 +603,8 @@ int rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt,
void rtp_parse_close(RTPDemuxContext *s) void rtp_parse_close(RTPDemuxContext *s)
{ {
// TODO: fold this into the protocol specific data fields. // TODO: fold this into the protocol specific data fields.
av_free(s->rtp_payload_data->mode);
av_free(s->rtp_payload_data->au_headers);
if (!strcmp(ff_rtp_enc_name(s->payload_type), "MP2T")) { if (!strcmp(ff_rtp_enc_name(s->payload_type), "MP2T")) {
ff_mpegts_parse_close(s->ts); ff_mpegts_parse_close(s->ts);
} }

@ -48,6 +48,7 @@ typedef struct rtp_payload_data
int rap_flag; int rap_flag;
int streamstate; int streamstate;
} *au_headers; } *au_headers;
int au_headers_allocated;
int nb_au_headers; int nb_au_headers;
int au_headers_length_bytes; int au_headers_length_bytes;
int cur_au_index; int cur_au_index;

Loading…
Cancel
Save