diff options
author | yenatch <yenatch@gmail.com> | 2018-03-10 18:17:05 -0500 |
---|---|---|
committer | yenatch <yenatch@gmail.com> | 2018-03-10 18:20:31 -0500 |
commit | 8efa0dcfb0e156dee5ca2542f80e9b795a80e3a5 (patch) | |
tree | 8aabd24517bb398682aa8285fa214d1c218c4f48 /tools/scan_includes.c | |
parent | 12070ca50067d3abe36a730190f88ee43f2cace9 (diff) |
Fix scan_includes matching the word "include" in strings.
Diffstat (limited to 'tools/scan_includes.c')
-rw-r--r-- | tools/scan_includes.c | 14 |
1 files changed, 13 insertions, 1 deletions
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); |