diff options
Diffstat (limited to 'dev-libs/capstone/files/capstone-5.0_rc2-oob-mem-access.patch')
-rw-r--r-- | dev-libs/capstone/files/capstone-5.0_rc2-oob-mem-access.patch | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/dev-libs/capstone/files/capstone-5.0_rc2-oob-mem-access.patch b/dev-libs/capstone/files/capstone-5.0_rc2-oob-mem-access.patch new file mode 100644 index 000000000000..4e538ef4d5fb --- /dev/null +++ b/dev-libs/capstone/files/capstone-5.0_rc2-oob-mem-access.patch @@ -0,0 +1,40 @@ +Author: Mario Haustein <mario.haustein@hrz.tu-chemnitz.de> +Date: Mon Aug 22 18:52:19 2022 +0200 + + PPC: fix out of bound memory access + + closes #1912 + +Bug: https://bugs.gentoo.org/865151 +Upstream: https://github.com/capstone-engine/capstone/pull/1913 + +diff --git a/arch/PowerPC/PPCInstPrinter.c b/arch/PowerPC/PPCInstPrinter.c +index 22eef4ee..a5a30a8b 100644 +--- a/arch/PowerPC/PPCInstPrinter.c ++++ b/arch/PowerPC/PPCInstPrinter.c +@@ -1116,7 +1116,8 @@ static char *stripRegisterPrefix(const char *RegName) + char *name = cs_strdup(RegName + 2); + + // also strip the last 2 letters +- name[strlen(name) - 2] = '\0'; ++ if(strlen(name) > 2) ++ name[strlen(name) - 2] = '\0'; + + return name; + } +diff --git a/suite/cstest/issues.cs b/suite/cstest/issues.cs +index e4fb6cfa..3183f43f 100644 +--- a/suite/cstest/issues.cs ++++ b/suite/cstest/issues.cs +@@ -1,3 +1,11 @@ ++!# issue 1912 PPC register name ++!# CS_ARCH_PPC, CS_MODE_BIG_ENDIAN, None ++0x2d,0x03,0x00,0x80 == cmpwi cr2, r3, 0x80 ++ ++!# issue 1912 PPC no register name ++!# CS_ARCH_PPC, CS_MODE_BIG_ENDIAN, CS_OPT_SYNTAX_NOREGNAME ++0x2d,0x03,0x00,0x80 == cmpwi 2, 3, 0x80 ++ + !# issue 1839 AArch64 Incorrect detailed disassembly of ldr + !# CS_ARCH_ARM64, CS_MODE_ARM, CS_OPT_DETAIL + 0x41,0x00,0x40,0xf9 == ldr x1, [x2] ; operands[0].access: WRITE ; operands[1].access: READ |