diff options
author | Kirill Simonov <xi@resolvent.net> | 2014-02-03 00:26:46 -0600 |
---|---|---|
committer | Kirill Simonov <xi@resolvent.net> | 2014-02-03 00:26:46 -0600 |
commit | c9479c77ed4bd43099e53b272d395f62d58b461b (patch) | |
tree | c848ab8096bd51ab54f23fc2b458a4afa2009494 /src | |
parent | c201bf64fa16fb65b11624dacc24d96a46604f02 (diff) | |
download | libyaml-git-c9479c77ed4bd43099e53b272d395f62d58b461b.tar.gz |
Limit input size to SIZE_MAX/2.
Diffstat (limited to 'src')
-rw-r--r-- | src/reader.c | 4 | ||||
-rw-r--r-- | src/yaml_private.h | 1 |
2 files changed, 5 insertions, 0 deletions
diff --git a/src/reader.c b/src/reader.c index 829e32d..d47921c 100644 --- a/src/reader.c +++ b/src/reader.c @@ -460,6 +460,10 @@ yaml_parser_update_buffer(yaml_parser_t *parser, size_t length) } + if (parser->offset >= PTRDIFF_MAX) + return yaml_parser_set_reader_error(parser, "input is too long", + PTRDIFF_MAX, -1); + return 1; } diff --git a/src/yaml_private.h b/src/yaml_private.h index f248383..540f6e2 100644 --- a/src/yaml_private.h +++ b/src/yaml_private.h @@ -8,6 +8,7 @@ #include <assert.h> #include <limits.h> #include <stddef.h> +#include <stdint.h> /* * Memory management. |