[FFmpeg-cvslog] avcodec/h264: Fix segfault in 4:2:2 chroma deblock with 32-bit msvc

Henrik Gramner git at videolan.org
Fri Feb 5 22:02:41 CET 2016


ffmpeg | branch: master | Henrik Gramner <henrik at gramner.com> | Fri Feb  5 21:01:49 2016 +0100| [aa751573fef5a313fd485a74746ab664bd537581] | committer: Henrik Gramner

avcodec/h264: Fix segfault in 4:2:2 chroma deblock with 32-bit msvc

Using rNm and x86inc's stack allocation with a negative value at the same
time isn't supported, and caused the original stack pointer to be clobbered
when using a compiler that doesn't support stack alignment.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=aa751573fef5a313fd485a74746ab664bd537581
---

 libavcodec/x86/h264_deblock.asm |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libavcodec/x86/h264_deblock.asm b/libavcodec/x86/h264_deblock.asm
index 8f80863..4aabbc0 100644
--- a/libavcodec/x86/h264_deblock.asm
+++ b/libavcodec/x86/h264_deblock.asm
@@ -867,7 +867,8 @@ ff_chroma_inter_body_mmxext:
 %define t5 r4
 %define t6 r5
 
-cglobal deblock_h_chroma422_8, 5, 6, 0, 0-(1+ARCH_X86_64*2)*mmsize
+cglobal deblock_h_chroma422_8, 5, 6
+    SUB rsp, (1+ARCH_X86_64*2)*mmsize
     %if ARCH_X86_64
         %define buf0 [rsp+16]
         %define buf1 [rsp+8]
@@ -907,6 +908,7 @@ cglobal deblock_h_chroma422_8, 5, 6, 0, 0-(1+ARCH_X86_64*2)*mmsize
     movq m0, buf0
     movq m3, buf1
     TRANSPOSE8x4B_STORE PASS8ROWS(t5, r0, r1, t6)
+    ADD rsp, (1+ARCH_X86_64*2)*mmsize
 RET
 
 ; in: %1=p0 %2=p1 %3=q1



More information about the ffmpeg-cvslog mailing list