From 34c2288fd032120c3d16b9ad97528ab78f481f06 Mon Sep 17 00:00:00 2001 From: Marco Spataro <42452606+ZedKoS@users.noreply.github.com> Date: Thu, 10 Sep 2020 12:49:04 +0200 Subject: [PATCH] Fix __FILE__ when filename contains quotes --- src/asm/fstack.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/asm/fstack.c b/src/asm/fstack.c index b02deea2..fa374a49 100644 --- a/src/asm/fstack.c +++ b/src/asm/fstack.c @@ -522,7 +522,26 @@ void fstk_Init(char *pFileName) { char tzSymFileName[_MAX_PATH + 1 + 2]; - snprintf(tzSymFileName, sizeof(tzSymFileName), "\"%s\"", pFileName); + char *c = pFileName; + int fileNameIndex = 0; + + tzSymFileName[fileNameIndex++] = '"'; + + // minus 2 to account for trailing "\"\0" + // minus 1 to avoid a buffer overflow in extreme cases + while (*c && fileNameIndex < sizeof(tzSymFileName) - 2 - 1) { + + if (*c == '"') { + tzSymFileName[fileNameIndex++] = '\\'; + } + + tzSymFileName[fileNameIndex++] = *c; + ++c; + } + + tzSymFileName[fileNameIndex++] = '"'; + tzSymFileName[fileNameIndex] = '\0'; + sym_AddString("__FILE__", tzSymFileName); pFileStack = NULL;