ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinha...@gmail.com> | 
Sat Jul  6 16:18:01 2019 +0200| [610460a397b15993a6f469b2c50fe7a3bd4ff0a1] | 
committer: Paul B Mahol

truehd_core: Return error in case of error

Several checks (e.g. when the size of the input packet is too small)
simply used "goto fail", but didn't set the return value appropriately
for an error.

Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=610460a397b15993a6f469b2c50fe7a3bd4ff0a1
---

 libavcodec/truehd_core_bsf.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/libavcodec/truehd_core_bsf.c b/libavcodec/truehd_core_bsf.c
index 83f2b16e3d..f858c2d4d5 100644
--- a/libavcodec/truehd_core_bsf.c
+++ b/libavcodec/truehd_core_bsf.c
@@ -53,8 +53,10 @@ static int truehd_core_filter(AVBSFContext *ctx, AVPacket 
*out)
     if (ret < 0)
         return ret;
 
-    if (in->size < 4)
+    if (in->size < 4) {
+        ret = AVERROR_INVALIDDATA;
         goto fail;
+    }
 
     ret = init_get_bits(&gbc, in->data, 32);
     if (ret < 0)
@@ -62,8 +64,10 @@ static int truehd_core_filter(AVBSFContext *ctx, AVPacket 
*out)
 
     skip_bits(&gbc, 4);
     in_size = get_bits(&gbc, 12) * 2;
-    if (in_size < 4 || in_size > in->size)
+    if (in_size < 4 || in_size > in->size) {
+        ret = AVERROR_INVALIDDATA;
         goto fail;
+    }
 
     out_size = in_size;
     dts = get_bits(&gbc, 16);
@@ -73,13 +77,15 @@ static int truehd_core_filter(AVBSFContext *ctx, AVPacket 
*out)
         goto fail;
 
     if (show_bits_long(&gbc, 32) == 0xf8726fba) {
-        if ((ret = ff_mlp_read_major_sync(ctx, &s->hdr, &gbc)) != 0)
+        if ((ret = ff_mlp_read_major_sync(ctx, &s->hdr, &gbc)) < 0)
             goto fail;
         have_header = 1;
     }
 
-    if (s->hdr.num_substreams > MAX_SUBSTREAMS)
+    if (s->hdr.num_substreams > MAX_SUBSTREAMS) {
+        ret = AVERROR_INVALIDDATA;
         goto fail;
+    }
 
     for (i = 0; i < s->hdr.num_substreams; i++) {
         for (int j = 0; j < 4; j++)

_______________________________________________
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to