mirror of
https://github.com/gbdev/rgbds.git
synced 2026-08-27 00:55:15 +00:00
Disallow NUL characters in section names and assertion messages
Allowing these in object files would lose anything after the '\0' when RGBLINK reads the object.
This commit is contained in:
@@ -162,6 +162,10 @@ void out_CreatePatch(uint32_t type, Expression const &expr, uint32_t ofs, uint32
|
||||
void out_CreateAssert(
|
||||
AssertionType type, Expression const &expr, std::string const &message, uint32_t ofs
|
||||
) {
|
||||
if (message.find('\0') != std::string::npos) {
|
||||
fatal("Assertion messages cannot contain '\\0' characters");
|
||||
}
|
||||
|
||||
Assertion &assertion = assertions.emplace_front();
|
||||
|
||||
initPatch(assertion.patch, type, expr, ofs);
|
||||
|
||||
@@ -544,6 +544,10 @@ void sect_NewSection(
|
||||
SectionSpec const &attrs,
|
||||
SectionModifier mod
|
||||
) {
|
||||
if (name.find('\0') != std::string::npos) {
|
||||
fatal("Section names cannot contain '\\0' characters");
|
||||
}
|
||||
|
||||
for (SectionStackEntry &entry : sectionStack) {
|
||||
if (entry.section && entry.section->name == name) {
|
||||
fatal("Section \"%s\" is already on the stack", name.c_str());
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
assert x, "oops \0 null"
|
||||
@@ -0,0 +1,2 @@
|
||||
FATAL: Assertion messages cannot contain '\0' characters
|
||||
at assert-nul.asm(1)
|
||||
@@ -0,0 +1,2 @@
|
||||
SECTION "test\0 foo", ROM0
|
||||
SECTION "test\0 bar", ROM0
|
||||
@@ -0,0 +1,2 @@
|
||||
FATAL: Section names cannot contain '\0' characters
|
||||
at section-name-nul.asm(1)
|
||||
@@ -7,4 +7,4 @@ SECTION "ROM2 1K", ROMX,BANK[2]
|
||||
ds $1000
|
||||
SECTION "ROM2 1", ROMX,BANK[2]
|
||||
ds 1
|
||||
SECTION "\\\"\'\n\r\t\0", ROM0
|
||||
SECTION "\\\"\'\n\r\t", ROM0
|
||||
|
||||
Reference in New Issue
Block a user