Reject input that contains null characters

Null characters in the middle of strings interact badly with the RGBDS
codebase, which assumes null-terminated strings. There is no reason to
support null characters in input source code, so the simplest way to deal
with null characters is to reject them early.
This commit is contained in:
dbrotz committed 2019-09-09 17:27:56 -07:00
1 parent 17b9838c8f
commit c5e8e4ff83
2 files changed
+10 -2

No files matched your search

+8
View File
@@ -269,6 +269,7 @@ YY_BUFFER_STATE yy_create_buffer(FILE *f)
/* Convert all line endings to LF and spaces */
char *mem = pBuffer->pBuffer;
int32_t lineCount = 0;
while (*mem) {
if ((mem[0] == '\\') && (mem[1] == '\"' || mem[1] == '\\')) {
@@ -279,15 +280,22 @@ YY_BUFFER_STATE yy_create_buffer(FILE *f)
|| ((mem[0] == '\r') && (mem[1] == '\n'))) {
*mem++ = ' ';
*mem++ = '\n';
lineCount++;
/* LF and CR */
} else if ((mem[0] == '\n') || (mem[0] == '\r')) {
*mem++ = '\n';
lineCount++;
} else {
mem++;
}
}
}
if (mem != pBuffer->pBuffer + size) {
nLineNo = lineCount + 1;
fatalerror("Found null character");
}
/* Remove comments */
mem = pBuffer->pBuffer;
+2 -2
View File
@@ -1,2 +1,2 @@
ERROR: null-in-macro.asm(1):
Unterminated MACRO definition.
ERROR: null-in-macro.asm(2):
Found null character