summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKirill Simonov <xi@resolvent.net>2014-02-03 00:26:46 -0600
committerKirill Simonov <xi@resolvent.net>2014-02-03 00:26:46 -0600
commita97e95b04b0c4f54ce64f672ce127de5eb6f63f6 (patch)
treec848ab8096bd51ab54f23fc2b458a4afa2009494
parent24804f6fb1fccb732c103a60694357e32b01c8c4 (diff)
downloadlibyaml-hg-a97e95b04b0c4f54ce64f672ce127de5eb6f63f6.tar.gz
Limit input size to SIZE_MAX/2.
-rw-r--r--src/reader.c4
-rw-r--r--src/yaml_private.h1
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.