diff -r d7cb9c2731c0 configure.ac --- a/configure.ac Mon Feb 03 23:42:24 2014 -0600 +++ b/configure.ac Fri Mar 14 17:52:43 2014 -0500 @@ -19,7 +19,7 @@ # YAML_AGE = 0 m4_define([YAML_RELEASE], 0) m4_define([YAML_CURRENT], 2) -m4_define([YAML_REVISION], 2) +m4_define([YAML_REVISION], 4) m4_define([YAML_AGE], 0) # Initialize autoconf & automake. diff -r d7cb9c2731c0 src/scanner.c --- a/src/scanner.c Mon Feb 03 23:42:24 2014 -0600 +++ b/src/scanner.c Fri Mar 14 17:52:43 2014 -0500 @@ -2629,6 +2629,9 @@ /* Check if it is a URI-escape sequence. */ if (CHECK(parser->buffer, '%')) { + if (!STRING_EXTEND(parser, string)) + goto error; + if (!yaml_parser_scan_uri_escapes(parser, directive, start_mark, &string)) goto error; } diff -r d7cb9c2731c0 src/yaml_private.h --- a/src/yaml_private.h Mon Feb 03 23:42:24 2014 -0600 +++ b/src/yaml_private.h Fri Mar 14 17:52:43 2014 -0500 @@ -143,9 +143,12 @@ (string).start = (string).pointer = (string).end = 0) #define STRING_EXTEND(context,string) \ - (((string).pointer+5 < (string).end) \ + ((((string).pointer+5 < (string).end) \ || yaml_string_extend(&(string).start, \ - &(string).pointer, &(string).end)) + &(string).pointer, &(string).end)) ? \ + 1 : \ + ((context)->error = YAML_MEMORY_ERROR, \ + 0)) #define CLEAR(context,string) \ ((string).pointer = (string).start, \ diff -r d7cb9c2731c0 win32/config.h