swscale/x86/rgb2rgb_template: Do not crash on misaligend stride
authorMichael Niedermayer <michael@niedermayer.cc>
Tue, 15 Dec 2015 01:06:04 +0000 (02:06 +0100)
committerCarl Eugen Hoyos <cehoyos@ag.or.at>
Tue, 15 Dec 2015 10:22:18 +0000 (11:22 +0100)
Fixes Ticket5013

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 80bfce35ccd11458e97f68f417fc094c5347070c)

libswscale/x86/rgb2rgb_template.c

index 80e5670..bfcaead 100644 (file)
@@ -1874,8 +1874,10 @@ static void RENAME(interleaveBytes)(const uint8_t *src1, const uint8_t *src2, ui
     for (h=0; h < height; h++) {
         int w;
 
-        if (width >= 16)
+        if (width >= 16
 #if COMPILE_TEMPLATE_SSE2
+            && !((((intptr_t)src1) | ((intptr_t)src2) | ((intptr_t)dest))&15)
+            )
         __asm__(
             "xor              %%"REG_a", %%"REG_a"  \n\t"
             "1:                                     \n\t"
@@ -1895,6 +1897,7 @@ static void RENAME(interleaveBytes)(const uint8_t *src1, const uint8_t *src2, ui
             : "memory", "%"REG_a""
         );
 #else
+            )
         __asm__(
             "xor %%"REG_a", %%"REG_a"               \n\t"
             "1:                                     \n\t"