From 748ce9d702860708746993c1fecbbfa7cb533db8 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sun, 20 Nov 2016 12:57:42 +0100 Subject: avutil/opt: Fix setting int64 to its maximum Found-by: Andreas Reviewed-by: Andreas Cadhalpun Signed-off-by: Michael Niedermayer --- libavutil/opt.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'libavutil/opt.c') diff --git a/libavutil/opt.c b/libavutil/opt.c index cd16bd1d3f..cd46a56dc4 100644 --- a/libavutil/opt.c +++ b/libavutil/opt.c @@ -126,9 +126,13 @@ static int write_number(void *obj, const AVOption *o, void *dst, double num, int break; case AV_OPT_TYPE_DURATION: case AV_OPT_TYPE_CHANNEL_LAYOUT: - case AV_OPT_TYPE_INT64: - *(int64_t *)dst = llrint(num / den) * intnum; - break; + case AV_OPT_TYPE_INT64:{ + double d = num / den; + if (intnum == 1 && d == (double)INT64_MAX) { + *(int64_t *)dst = INT64_MAX; + } else + *(int64_t *)dst = llrint(d) * intnum; + break;} case AV_OPT_TYPE_FLOAT: *(float *)dst = num * intnum / den; break; -- cgit v1.2.3