From bce1f5109665ac4e05550bc4512bf842cb0ea2ef Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Mon, 18 Feb 2019 22:25:58 -0700 Subject: [PATCH] Build: Fix #1640: Change strcpy to snprintf. --- glslang/MachineIndependent/preprocessor/Pp.cpp | 3 +-- glslang/MachineIndependent/preprocessor/PpScanner.cpp | 9 +++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp index 1b83bda..ce6c22f 100755 --- a/glslang/MachineIndependent/preprocessor/Pp.cpp +++ b/glslang/MachineIndependent/preprocessor/Pp.cpp @@ -866,8 +866,7 @@ int TPpContext::CPPextension(TPpToken* ppToken) if (token != PpAtomIdentifier) parseContext.ppError(ppToken->loc, "extension name expected", "#extension", ""); - assert(strlen(ppToken->name) <= MaxTokenLength); - strcpy(extensionName, ppToken->name); + snprintf(extensionName, sizeof(extensionName), "%s", ppToken->name); token = scanToken(ppToken); if (token != ':') { diff --git a/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/glslang/MachineIndependent/preprocessor/PpScanner.cpp index 8dd1036..0f144af 100755 --- a/glslang/MachineIndependent/preprocessor/PpScanner.cpp +++ b/glslang/MachineIndependent/preprocessor/PpScanner.cpp @@ -1116,7 +1116,7 @@ int TPpContext::tokenize(TPpToken& ppToken) parseContext.ppError(ppToken.loc, "character literals not supported", "\'", ""); continue; default: - strcpy(ppToken.name, atomStrings.getString(token)); + snprintf(ppToken.name, sizeof(ppToken.name), "%s", atomStrings.getString(token)); break; } @@ -1185,8 +1185,8 @@ int TPpContext::tokenPaste(int token, TPpToken& ppToken) case PpAtomAnd: case PpAtomOr: case PpAtomXor: - strcpy(ppToken.name, atomStrings.getString(resultToken)); - strcpy(pastedPpToken.name, atomStrings.getString(token)); + snprintf(ppToken.name, sizeof(ppToken.name), "%s", atomStrings.getString(resultToken)); + snprintf(pastedPpToken.name, sizeof(pastedPpToken.name), "%s", atomStrings.getString(token)); break; default: parseContext.ppError(ppToken.loc, "not supported for these tokens", "##", ""); @@ -1198,7 +1198,8 @@ int TPpContext::tokenPaste(int token, TPpToken& ppToken) parseContext.ppError(ppToken.loc, "combined tokens are too long", "##", ""); return resultToken; } - strncat(ppToken.name, pastedPpToken.name, MaxTokenLength - strlen(ppToken.name)); + snprintf(&ppToken.name[0] + strlen(ppToken.name), sizeof(ppToken.name) - strlen(ppToken.name), + "%s", pastedPpToken.name); // correct the kind of token we are making, if needed (identifiers stay identifiers) if (resultToken != PpAtomIdentifier) { -- 2.7.4