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 | a97e95b04b0c4f54ce64f672ce127de5eb6f63f6 (patch) | |
tree | c848ab8096bd51ab54f23fc2b458a4afa2009494 | |
parent | 24804f6fb1fccb732c103a60694357e32b01c8c4 (diff) | |
download | libyaml-hg-a97e95b04b0c4f54ce64f672ce127de5eb6f63f6.tar.gz |
Limit input size to SIZE_MAX/2.
-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. |