summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2021-12-05 18:06:02 +0100
committerBenjamin Otte <otte@redhat.com>2023-04-15 06:11:54 +0200
commit670286eb9eecbb49f29db34cfb4e5981eca54851 (patch)
tree6f6a8bf9cf798e97b36ab0314c9c3c3055895436
parenta7a3ec8a168832500bd0ec0796fbf23b608b2fc7 (diff)
downloadgtk+-670286eb9eecbb49f29db34cfb4e5981eca54851.tar.gz
jsonparser: Don't treat \0 as eof
Instead, treat it as regular part of the data and emit errors when we encounter it.
-rw-r--r--gtk/json/gtkjsonparser.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/gtk/json/gtkjsonparser.c b/gtk/json/gtkjsonparser.c
index 2c1b94de2c..748e2073f0 100644
--- a/gtk/json/gtkjsonparser.c
+++ b/gtk/json/gtkjsonparser.c
@@ -393,7 +393,7 @@ gtk_json_parser_schema_error (GtkJsonParser *self,
static gboolean
gtk_json_parser_is_eof (GtkJsonParser *self)
{
- return self->reader >= self->end || *self->reader == '\0';
+ return self->reader >= self->end;
}
static gsize
@@ -900,6 +900,8 @@ gtk_json_parser_parse_value (GtkJsonParser *self)
end++;
gtk_json_parser_syntax_error_at (self, self->block->value, end, "Numbers may not start with '%c'", *self->block->value);
}
+ else if (*self->reader == 0)
+ gtk_json_parser_syntax_error (self, "Unexpected nul byte in document");
else
gtk_json_parser_syntax_error (self, "Expected a value");
return FALSE;
@@ -1070,10 +1072,10 @@ gtk_json_parser_next (GtkJsonParser *self)
if (gtk_json_parser_is_eof (self))
{
self->block->value = NULL;
- if (gtk_json_parser_remaining (self))
- {
- gtk_json_parser_syntax_error (self, "Unexpected nul byte in document");
- }
+ }
+ else if (*self->reader == 0)
+ {
+ gtk_json_parser_syntax_error (self, "Unexpected nul byte in document");
}
else
{