avformat/sdsdec: fix undefined behaviour

Fixes #8163, #8164, #8165.
This commit is contained in:
Paul B Mahol 2019-09-25 18:01:09 +02:00
parent d58752bcb9
commit 1a17a66b09

View File

@ -43,7 +43,7 @@ static void byte2_read(const uint8_t *src, uint32_t *dst)
int i; int i;
for (i = 0; i < 120; i += 2) { 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; 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) { for (i = 0; i < 120; i += 3) {
unsigned sample; 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; 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) { for (i = 0; i < 120; i += 4) {
unsigned sample; 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; dst[i / 4] = sample;
} }
} }