avcodec/cbs_av1: Make overread check more robust
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Wed, 18 Sep 2019 03:26:01 +0000 (05:26 +0200)
committerMark Thompson <sw@jkqxz.net>
Sun, 29 Sep 2019 16:48:40 +0000 (17:48 +0100)
When performing a comparison of a signed int and an unsigned int, the
signed int is first converted to an unsigned int, so that negative
values are being treated as big, positive values. This can become a
problem in an overread check, namely when an overread already happened.
So change the type of the variable containing the amount of bits that
need to be left to signed.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
libavcodec/cbs_av1.c

index 98cd37e..c027933 100644 (file)
@@ -211,8 +211,8 @@ static int cbs_av1_read_ns(CodedBitstreamContext *ctx, GetBitContext *gbc,
                            uint32_t n, const char *name,
                            const int *subscripts, uint32_t *write_to)
 {
-    uint32_t w, m, v, extra_bit, value;
-    int position;
+    uint32_t m, v, extra_bit, value;
+    int position, w;
 
     av_assert0(n > 0);