From 8efa0dcfb0e156dee5ca2542f80e9b795a80e3a5 Mon Sep 17 00:00:00 2001 From: yenatch Date: Sat, 10 Mar 2018 18:17:05 -0500 Subject: [PATCH] Fix scan_includes matching the word "include" in strings. --- tools/scan_includes.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/tools/scan_includes.c b/tools/scan_includes.c index 2babdcfb5..63af3bcfb 100644 --- a/tools/scan_includes.c +++ b/tools/scan_includes.c @@ -48,9 +48,20 @@ void scan_file(char* filename) { buffer = strchr(buffer, '\n'); if (!buffer) { fprintf(stderr, "%s: no newline at end of file\n", filename); + break; } break; + case '"': + buffer++; + buffer = strchr(buffer, '"'); + if (!buffer) { + fprintf(stderr, "%s: unterminated string\n", filename); + break; + } + buffer++; + break; + case 'i': case 'I': if ((strncmp(buffer, "INCBIN", 6) == 0) || (strncmp(buffer, "incbin", 6) == 0)) { @@ -60,9 +71,10 @@ void scan_file(char* filename) { } if (is_incbin || is_include) { buffer = strchr(buffer, '"'); - if (!buffer++) { + if (!buffer) { break; } + buffer++; int length = strcspn(buffer, "\""); char *include = malloc(length + 1); strncpy(include, buffer, length);