diff options
author | James Almer <jamrial@gmail.com> | 2020-08-28 19:40:09 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2020-08-28 20:09:25 -0300 |
commit | 1a35fffaf24bf8a20d629c32f6c702b241c4b83f (patch) | |
tree | fd24f88239feebb73169c4d798fa784dd37bf0ea | |
parent | 2ff3c466eca66bb8eb32bb41a4ce70fe285e3ea0 (diff) | |
download | ffmpeg-1a35fffaf24bf8a20d629c32f6c702b241c4b83f.tar.gz |
x86/cfhddsp: zero extend int arguments
if taken from stack, they may have garbage in the upper bits otherwise.
Also, there are only 8 arguments, so don't attempt to load 11.
Fixes SIGSEV crashes in some targets.
Reviewed-by: durandal_1707
Signed-off-by: James Almer <jamrial@gmail.com>
-rw-r--r-- | libavcodec/x86/cfhddsp.asm | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/libavcodec/x86/cfhddsp.asm b/libavcodec/x86/cfhddsp.asm index 51848677eb..87c2df634a 100644 --- a/libavcodec/x86/cfhddsp.asm +++ b/libavcodec/x86/cfhddsp.asm @@ -37,29 +37,26 @@ SECTION .text %macro CFHD_HORIZ_FILTER 1 %if %1 == 1023 -cglobal cfhd_horiz_filter_clip10, 5, 6, 8 + 4 * ARCH_X86_64, output, low, high, width, bpc - DEFINE_ARGS output, low, high, width, x, temp +cglobal cfhd_horiz_filter_clip10, 5, 6, 8 + 4 * ARCH_X86_64, output, low, high, width, x, temp shl widthd, 1 %define ostrideq widthq %define lwidthq widthq %define hwidthq widthq %elif %1 == 4095 -cglobal cfhd_horiz_filter_clip12, 5, 6, 8 + 4 * ARCH_X86_64, output, low, high, width, bpc - DEFINE_ARGS output, low, high, width, x, temp +cglobal cfhd_horiz_filter_clip12, 5, 6, 8 + 4 * ARCH_X86_64, output, low, high, width, x, temp shl widthd, 1 %define ostrideq widthq %define lwidthq widthq %define hwidthq widthq %else %if ARCH_X86_64 -cglobal cfhd_horiz_filter, 11, 11, 12, output, ostride, low, lwidth, high, hwidth, width, height -DEFINE_ARGS output, ostride, low, lwidth, high, hwidth, width, height, x, y, temp +cglobal cfhd_horiz_filter, 8, 11, 12, output, ostride, low, lwidth, high, hwidth, width, height, x, y, temp shl ostrided, 1 shl lwidthd, 1 shl hwidthd, 1 shl widthd, 1 - mov yq, heightq + mov yd, heightd neg yq %else cglobal cfhd_horiz_filter, 7, 7, 8, output, x, low, y, high, temp, width, height @@ -307,14 +304,13 @@ CFHD_HORIZ_FILTER 4095 INIT_XMM sse2 %if ARCH_X86_64 -cglobal cfhd_vert_filter, 11, 11, 14, output, ostride, low, lwidth, high, hwidth, width, height -DEFINE_ARGS output, ostride, low, lwidth, high, hwidth, width, height, x, y, pos +cglobal cfhd_vert_filter, 8, 11, 14, output, ostride, low, lwidth, high, hwidth, width, height, x, y, pos shl ostrided, 1 shl lwidthd, 1 shl hwidthd, 1 shl widthd, 1 - dec heightq + dec heightd mova m8, [factor_p1_n1] mova m9, [factor_n1_p1] |