summaryrefslogtreecommitdiff
path: root/libavutil
diff options
context:
space:
mode:
authorMengye Lv <mengyelv@tencent.com>2019-10-02 10:30:45 +0800
committerJun Zhao <barryjzhao@tencent.com>2019-10-06 17:28:29 +0800
commit9f353e376b161eb16a78fd7ad727c9513ac60d13 (patch)
tree85e244d587f62b95cfeb2c1265bd9f231fd9320d /libavutil
parent3b4e9a31ea263830d6dfbc402c02e3c8d017094f (diff)
avutil/common: Fix underflow for ROUNDED_DIV with unsigned integer
When used ROUNDED_DIV(a,b), if a is unsigned integer zero, it's will lead to an underflow issue(it called unsigned integer wrapping). Fixes #8062 Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Mengye Lv <mengyelv@tencent.com> Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
Diffstat (limited to 'libavutil')
-rw-r--r--libavutil/common.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/libavutil/common.h b/libavutil/common.h
index af35397eb9..f09f0b486b 100644
--- a/libavutil/common.h
+++ b/libavutil/common.h
@@ -53,7 +53,7 @@
//rounded division & shift
#define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b))
/* assume b>0 */
-#define ROUNDED_DIV(a,b) (((a)>0 ? (a) + ((b)>>1) : (a) - ((b)>>1))/(b))
+#define ROUNDED_DIV(a,b) (((a)>=0 ? (a) + ((b)>>1) : (a) - ((b)>>1))/(b))
/* Fast a/(1<<b) rounded toward +inf. Assume a>=0 and b>=0 */
#define AV_CEIL_RSHIFT(a,b) (!av_builtin_constant_p(b) ? -((-(a)) >> (b)) \
: ((a) + (1<<(b)) - 1) >> (b))