Fix __FILE__ when filename contains quotes

This commit is contained in:
Marco Spataro
2020-09-10 12:49:04 +02:00
committed by GitHub
parent 304bb9f902
commit 34c2288fd0

View File

@@ -522,7 +522,26 @@ void fstk_Init(char *pFileName)
{ {
char tzSymFileName[_MAX_PATH + 1 + 2]; 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); sym_AddString("__FILE__", tzSymFileName);
pFileStack = NULL; pFileStack = NULL;