From e602d25f09d430c26862dfa4a07ec02f38764e96 Mon Sep 17 00:00:00 2001 From: Andrew Woloszyn Date: Tue, 12 Jan 2016 15:45:55 -0500 Subject: [PATCH] Removed strcpy that copied to itself. Found by running glslang with -fsanitize=address in clang. Also fixes a potential buffer-overrun with return from lReadByte. --- glslang/MachineIndependent/preprocessor/PpTokens.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/glslang/MachineIndependent/preprocessor/PpTokens.cpp index 642793d9..52343b7c 100644 --- a/glslang/MachineIndependent/preprocessor/PpTokens.cpp +++ b/glslang/MachineIndependent/preprocessor/PpTokens.cpp @@ -195,7 +195,7 @@ int TPpContext::ReadToken(TokenStream *pTok, TPpToken *ppToken) case PpAtomConstUint: len = 0; ch = lReadByte(pTok); - while (ch != 0) { + while (ch != 0 && ch != EndOfInput) { if (len < MaxTokenLength) { tokenText[len] = (char)ch; len++; @@ -215,12 +215,10 @@ int TPpContext::ReadToken(TokenStream *pTok, TPpToken *ppToken) break; case PpAtomConstFloat: case PpAtomConstDouble: - strcpy(ppToken->name, tokenText); ppToken->dval = atof(ppToken->name); break; case PpAtomConstInt: case PpAtomConstUint: - strcpy(ppToken->name, tokenText); if (len > 0 && tokenText[0] == '0') { if (len > 1 && (tokenText[1] == 'x' || tokenText[1] == 'X')) ppToken->ival = strtol(ppToken->name, 0, 16);