]> git.sesse.net Git - ffmpeg/commitdiff
avformat/sdsdec: fix undefined behaviour
authorPaul B Mahol <onemda@gmail.com>
Wed, 25 Sep 2019 16:01:09 +0000 (18:01 +0200)
committerPaul B Mahol <onemda@gmail.com>
Wed, 25 Sep 2019 16:01:09 +0000 (18:01 +0200)
Fixes #8163, #8164, #8165.

libavformat/sdsdec.c

index 9c361cdff2e86913a20b833a51bf2f6b17cd3d76..c70f5af849469ce2e53f49ede940380e9201ae6e 100644 (file)
@@ -43,7 +43,7 @@ static void byte2_read(const uint8_t *src, uint32_t *dst)
     int i;
 
     for (i = 0; i < 120; i += 2) {
-        unsigned sample = (src[i + 0] << 25) + (src[i + 1] << 18);
+        unsigned sample = ((unsigned)src[i + 0] << 25) + ((unsigned)src[i + 1] << 18);
 
         dst[i / 2] = sample;
     }
@@ -56,7 +56,7 @@ static void byte3_read(const uint8_t *src, uint32_t *dst)
     for (i = 0; i < 120; i += 3) {
         unsigned sample;
 
-        sample = (src[i + 0] << 25) | (src[i + 1] << 18) | (src[i + 2] << 11);
+        sample = ((unsigned)src[i + 0] << 25) | ((unsigned)src[i + 1] << 18) | ((unsigned)src[i + 2] << 11);
         dst[i / 3] = sample;
     }
 }
@@ -68,7 +68,7 @@ static void byte4_read(const uint8_t *src, uint32_t *dst)
     for (i = 0; i < 120; i += 4) {
         unsigned sample;
 
-        sample = (src[i + 0] << 25) | (src[i + 1] << 18) | (src[i + 2] << 11) | (src[i + 3] << 4);
+        sample = ((unsigned)src[i + 0] << 25) | ((unsigned)src[i + 1] << 18) | ((unsigned)src[i + 2] << 11) | ((unsigned)src[i + 3] << 4);
         dst[i / 4] = sample;
     }
 }