avfilter/vf_lut3d: check size in parse_dat()
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 10 May 2014 02:25:43 +0000 (04:25 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 10 May 2014 12:46:58 +0000 (14:46 +0200)
Fixes CID1212261
Reviewed-by: Clément Bœsch <u@pkh.me>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavfilter/vf_lut3d.c

index 85e270c..7b2f83f 100644 (file)
@@ -274,7 +274,12 @@ static int parse_dat(AVFilterContext *ctx, FILE *f)
 
     NEXT_LINE(skip_line(line));
     if (!strncmp(line, "3DLUTSIZE ", 10)) {
-        lut3d->lutsize = size = strtol(line + 10, NULL, 0);
+        size = strtol(line + 10, NULL, 0);
+        if (size < 2 || size > MAX_LEVEL) {
+            av_log(ctx, AV_LOG_ERROR, "Too large or invalid 3D LUT size\n");
+            return AVERROR(EINVAL);
+        }
+        lut3d->lutsize = size;
         NEXT_LINE(skip_line(line));
     }
     for (k = 0; k < size; k++) {