Module: wine Branch: master Commit: 020b6e094f04b27e4127e7cf647bac0987aaa418 URL: https://gitlab.winehq.org/wine/wine/-/commit/020b6e094f04b27e4127e7cf647bac0...
Author: Eric Pouech eric.pouech@gmail.com Date: Tue Apr 4 19:02:43 2023 +0200
winedump: Fix out of bounds access (spotted by GCC13).
Anyway, it's a pain that we have to maintain two MS symbols demanglers (this one and the one in dlls/msvcrt).
Signed-off-by: Eric Pouech epouech@codeweavers.com
---
tools/winedump/msmangle.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/winedump/msmangle.c b/tools/winedump/msmangle.c index f9440c04a45..4408e418191 100644 --- a/tools/winedump/msmangle.c +++ b/tools/winedump/msmangle.c @@ -573,10 +573,10 @@ static char *demangle_datatype (char **str, compound_type *ct, case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': /* Referring back to previously parsed type */ - if (sym->argc >= (size_t)('0' - *iter)) + if (sym->argc >= (size_t)(*iter - '0')) return NULL; - ct->dest_type = sym->arg_type ['0' - *iter]; - ct->expression = xstrdup (sym->arg_text ['0' - *iter]); + ct->dest_type = sym->arg_type [*iter - '0']; + ct->expression = xstrdup (sym->arg_text [*iter - '0']); iter++; break; default :