diff options
author | Martin Storsjö <martin@martin.st> | 2011-05-22 21:34:49 +0300 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2011-05-22 22:06:17 +0300 |
commit | 8089b7fa8c5b5a48cc7101daa4be891d0ead5a5e (patch) | |
tree | e589859d9dc795b5770dd2e0a185343b77c3c17d /libavutil | |
parent | 422b2362fc83ed3a75532ea68a6d167c52f447ec (diff) | |
download | ffmpeg-8089b7fa8c5b5a48cc7101daa4be891d0ead5a5e.tar.gz |
avoptions: Check the return value from av_get_number
This avoids doing a division by zero if the option wasn't found,
or wasn't an option of an appropriate type.
Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavutil')
-rw-r--r-- | libavutil/opt.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/libavutil/opt.c b/libavutil/opt.c index 57e3248a74..9e06b01c52 100644 --- a/libavutil/opt.c +++ b/libavutil/opt.c @@ -290,7 +290,8 @@ double av_get_double(void *obj, const char *name, const AVOption **o_out) double num=1; int den=1; - av_get_number(obj, name, o_out, &num, &den, &intnum); + if (av_get_number(obj, name, o_out, &num, &den, &intnum) < 0) + return -1; return num*intnum/den; } @@ -300,7 +301,8 @@ AVRational av_get_q(void *obj, const char *name, const AVOption **o_out) double num=1; int den=1; - av_get_number(obj, name, o_out, &num, &den, &intnum); + if (av_get_number(obj, name, o_out, &num, &den, &intnum) < 0) + return (AVRational){-1, 0}; if (num == 1.0 && (int)intnum == intnum) return (AVRational){intnum, den}; else @@ -313,7 +315,8 @@ int64_t av_get_int(void *obj, const char *name, const AVOption **o_out) double num=1; int den=1; - av_get_number(obj, name, o_out, &num, &den, &intnum); + if (av_get_number(obj, name, o_out, &num, &den, &intnum) < 0) + return -1; return num*intnum/den; } |