aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2023-07-31 11:42:23 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2023-08-02 18:31:59 +0200
commit28817b90fc3ea9f7d3a3a8864fdb3191cb95fe76 (patch)
treecd8a6fe37d1a8b79cc954735259985e9ba0c0866
parent80cc9b81deba0122a531f63b165f661a816d13c5 (diff)
downloadffmpeg-28817b90fc3ea9f7d3a3a8864fdb3191cb95fe76.tar.gz
avformat/hls_sample_encryption: Always free AC3HeaderInfo on error
The code currently presumes that a return value of AVERROR(ENOMEM) implies that ac3hdr could not be allocated, so it need not be freed. Yet any avpriv_ac3_parse_header() might allocate more than the AC3HeaderInfo internally (it doesn't currently), so simply free it unconditionally. Fixes Coverity issues #1492870 and #1492868. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-rw-r--r--libavformat/hls_sample_encryption.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/libavformat/hls_sample_encryption.c b/libavformat/hls_sample_encryption.c
index 089662905b..d5b4c11b66 100644
--- a/libavformat/hls_sample_encryption.c
+++ b/libavformat/hls_sample_encryption.c
@@ -105,8 +105,7 @@ int ff_hls_senc_parse_audio_setup_info(AVStream *st, HLSAudioSetupInfo *info)
ret = avpriv_ac3_parse_header(&ac3hdr, info->setup_data, info->setup_data_length);
if (ret < 0) {
- if (ret != AVERROR(ENOMEM))
- av_free(ac3hdr);
+ av_free(ac3hdr);
return ret;
}
@@ -317,8 +316,7 @@ static int get_next_ac3_eac3_sync_frame(CodecParserContext *ctx, AudioFrame *fra
ret = avpriv_ac3_parse_header(&hdr, frame->data, ctx->buf_end - frame->data);
if (ret < 0) {
- if (ret != AVERROR(ENOMEM))
- av_free(hdr);
+ av_free(hdr);
return ret;
}