ref: 0c446367ce79dfe2a26f4bd7668036477811a279
parent: 12070ca50067d3abe36a730190f88ee43f2cace9
parent: 8efa0dcfb0e156dee5ca2542f80e9b795a80e3a5
author: yenatch <yenatch@gmail.com>
date: Sun Mar 25 07:19:59 EDT 2018
Merge pull request #500 from yenatch/fix-scan-includes Fix scan_includes matching the word "include" in strings.
--- a/tools/scan_includes.c
+++ b/tools/scan_includes.c
@@ -48,9 +48,20 @@
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 @@
}
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);