ref: 8efa0dcfb0e156dee5ca2542f80e9b795a80e3a5
parent: 12070ca50067d3abe36a730190f88ee43f2cace9
author: yenatch <yenatch@gmail.com>
date: Sat Mar 10 13:17:05 EST 2018
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);