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);