diff options
author | Benjamin Otte <otte@redhat.com> | 2021-12-05 18:06:02 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2023-04-15 06:11:54 +0200 |
commit | 670286eb9eecbb49f29db34cfb4e5981eca54851 (patch) | |
tree | 6f6a8bf9cf798e97b36ab0314c9c3c3055895436 | |
parent | a7a3ec8a168832500bd0ec0796fbf23b608b2fc7 (diff) | |
download | gtk+-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.c | 12 |
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 { |