lavu/opt: check int lists length for overflow.
authorNicolas George <nicolas.george@normalesup.org>
Sat, 13 Apr 2013 09:46:56 +0000 (11:46 +0200)
committerNicolas George <nicolas.george@normalesup.org>
Sat, 13 Apr 2013 18:19:24 +0000 (20:19 +0200)
Also add parens on macro arguments.

libavutil/opt.h

index e368259..7f7b54e 100644 (file)
@@ -668,8 +668,10 @@ int av_opt_set_video_rate(void *obj, const char *name, AVRational val, int searc
  * @param flags  search flags
  */
 #define av_opt_set_int_list(obj, name, val, term, flags) \
-    av_opt_set_bin(obj, name, (const uint8_t *)val, \
-                   av_int_list_length(val, term) * sizeof(*val), flags)
+    (av_int_list_length(val, term) > INT_MAX / sizeof(*(val)) ? \
+     AVERROR(EINVAL) : \
+     av_opt_set_bin(obj, name, (const uint8_t *)(val), \
+                    av_int_list_length(val, term) * sizeof(*(val)), flags))
 /**
  * @}
  */