flacdec: simplify bounds checking in flac_probe()
authorXi Wang <xi.wang@gmail.com>
Fri, 15 Mar 2013 11:11:47 +0000 (07:11 -0400)
committerLuca Barbato <lu_zero@gentoo.org>
Fri, 15 Mar 2013 11:51:57 +0000 (12:51 +0100)
Simplify `p->buf > p->buf + p->buf_size - 4' as `p->buf_size < 4'.
Avoid a possible out-of-bounds pointer, which is undefined behavior
in C.

CC: libav-stable@libav.org
Signed-off-by: Xi Wang <xi.wang@gmail.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
libavformat/flacdec.c

index 7aaec9e..1edd880 100644 (file)
@@ -279,11 +279,9 @@ static int flac_read_header(AVFormatContext *s)
 
 static int flac_probe(AVProbeData *p)
 {
-    uint8_t *bufptr = p->buf;
-    uint8_t *end    = p->buf + p->buf_size;
-
-    if(bufptr > end-4 || memcmp(bufptr, "fLaC", 4)) return 0;
-    else                                            return AVPROBE_SCORE_MAX/2;
+    if (p->buf_size < 4 || memcmp(p->buf, "fLaC", 4))
+        return 0;
+    return AVPROBE_SCORE_MAX/2;
 }
 
 AVInputFormat ff_flac_demuxer = {