swscale: Fix an undefined behaviour
authorLuca Barbato <lu_zero@gentoo.org>
Thu, 1 May 2014 22:21:23 +0000 (00:21 +0200)
committerReinhard Tartler <siretart@tauware.de>
Sun, 4 May 2014 14:20:48 +0000 (10:20 -0400)
Prevent a division by zero down the codepath.

Sample-Id: 00001721-google
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
(cherry picked from commit 3a177a9cca924e097265b32f9282814f6b653e08)
(cherry picked from commit 0499f7809c1fcc33ed710cdf771a18b374702135)

libswscale/utils.c

index f0a2b46..23eb4a4 100644 (file)
@@ -316,7 +316,7 @@ static int initFilter(int16_t **outFilter, int32_t **filterPos,
 
         xDstInSrc = xInc - 0x10000;
         for (i = 0; i < dstW; i++) {
-            int xx = (xDstInSrc - ((filterSize - 2) << 16)) / (1 << 17);
+            int xx = (xDstInSrc - ((int64_t)(filterSize - 2) << 16)) / (1 << 17);
             int j;
             (*filterPos)[i] = xx;
             for (j = 0; j < filterSize; j++) {