]> git.sesse.net Git - vlc/commitdiff
format: integer overflow
authorRémi Denis-Courmont <remi@remlab.net>
Wed, 19 Nov 2014 15:16:05 +0000 (17:16 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Wed, 19 Nov 2014 15:17:14 +0000 (17:17 +0200)
modules/audio_filter/converter/format.c

index bb5525292d66d0c398a852567ff9c1186866f595..5b946cf0eae402bc791f2700f7463d17484881f5 100644 (file)
@@ -94,7 +94,7 @@ static block_t *U8toS16(filter_t *filter, block_t *bsrc)
     uint8_t *src = (uint8_t *)bsrc->p_buffer;
     int16_t *dst = (int16_t *)bdst->p_buffer;
     for (size_t i = bsrc->i_buffer; i--;)
-        *dst++ = ((*src++) - 128) << 8;
+        *dst++ = ((*src++) << 8) - 0x8000;
 out:
     block_Release(bsrc);
     VLC_UNUSED(filter);
@@ -128,7 +128,7 @@ static block_t *U8toS32(filter_t *filter, block_t *bsrc)
     uint8_t *src = (uint8_t *)bsrc->p_buffer;
     int32_t *dst = (int32_t *)bdst->p_buffer;
     for (size_t i = bsrc->i_buffer; i--;)
-        *dst++ = ((*src++) - 128) << 24;
+        *dst++ = ((*src++) << 24) - 0x80000000;
 out:
     block_Release(bsrc);
     VLC_UNUSED(filter);