From 5863cd10b85c49fa0e3b2a1dd0997f0db7bde26b Mon Sep 17 00:00:00 2001 From: JL2210 Date: Wed, 8 Apr 2020 17:25:26 -0400 Subject: [PATCH] Fix possible null pointer dereference It's possible that if the FILE passed to yy_create_buffer is at the end-of file, there may be a null pointer dereference. This should hopefully fix that. Found with clang-tools' scan-build: src/asm/lexer.c:281:25: warning: Array access (via field 'pBuffer') results in a null pointer dereference pBuffer->pBuffer[size] = 0; ~~~~~~~ ^ 1 warning generated. Signed-off-by: JL2210 --- src/asm/lexer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/asm/lexer.c b/src/asm/lexer.c index f8e86b49..7b72da75 100644 --- a/src/asm/lexer.c +++ b/src/asm/lexer.c @@ -254,7 +254,7 @@ YY_BUFFER_STATE yy_create_buffer(FILE *f) else if (capacity == 0) capacity = 1; - while (!feof(f)) { + do { if (buf == NULL || size >= capacity) { if (buf) capacity *= 2; @@ -273,7 +273,7 @@ YY_BUFFER_STATE yy_create_buffer(FILE *f) fatalerror("%s: fread error", __func__); size += read_count; - } + } while (!feof(f)); pBuffer->pBufferRealStart = buf; pBuffer->pBufferStart = buf + SAFETYMARGIN;