summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2014-02-03 16:48:01 -0800
committerTina Müller <cpan2@tinita.de>2018-07-18 21:56:11 +0200
commit96a49a1d9c771b1f7f29e8021abbb49c59f9b9a7 (patch)
tree8e5d20ef8e33d621c115f8cee45d056dfe664771
parent5b8859f728655747e01f202f71d52d863d18079e (diff)
downloadlibyaml-git-96a49a1d9c771b1f7f29e8021abbb49c59f9b9a7.tar.gz
yaml_stack_extend: guard against integer overflow
-rw-r--r--src/api.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/api.c b/src/api.c
index b0afd1f..e793b08 100644
--- a/src/api.c
+++ b/src/api.c
@@ -118,7 +118,12 @@ yaml_string_join(
YAML_DECLARE(int)
yaml_stack_extend(void **start, void **top, void **end)
{
- void *new_start = yaml_realloc(*start, ((char *)*end - (char *)*start)*2);
+ void *new_start;
+
+ if ((char *)*end - (char *)*start >= INT_MAX / 2)
+ return 0;
+
+ new_start = yaml_realloc(*start, ((char *)*end - (char *)*start)*2);
if (!new_start) return 0;