Fixed heap overflow in yaml_parser_scan_uri_escapes (Thanks Ivan Fratric of the Google Security Team).

This commit is contained in:
Kirill Simonov
2014-03-26 07:03:17 -05:00
parent 662f4be270
commit d1003a9d40
5 changed files with 13 additions and 7 deletions
+1 -1
View File
@@ -5,7 +5,7 @@ project (yaml C)
set (YAML_VERSION_MAJOR 0)
set (YAML_VERSION_MINOR 1)
set (YAML_VERSION_PATCH 4)
set (YAML_VERSION_PATCH 6)
set (YAML_VERSION_STRING "${YAML_VERSION_MAJOR}.${YAML_VERSION_MINOR}.${YAML_VERSION_PATCH}")
file (GLOB SRC src/*.c)
+2 -2
View File
@@ -3,7 +3,7 @@
# Define the package version numbers and the bug reporting link.
m4_define([YAML_MAJOR], 0)
m4_define([YAML_MINOR], 1)
m4_define([YAML_PATCH], 5)
m4_define([YAML_PATCH], 6)
m4_define([YAML_BUGS], [http://pyyaml.org/newticket?component=libyaml])
# Define the libtool version numbers; check the Autobook, Section 11.4.
@@ -19,7 +19,7 @@ m4_define([YAML_BUGS], [http://pyyaml.org/newticket?component=libyaml])
# YAML_AGE = 0
m4_define([YAML_RELEASE], 0)
m4_define([YAML_CURRENT], 2)
m4_define([YAML_REVISION], 3)
m4_define([YAML_REVISION], 4)
m4_define([YAML_AGE], 0)
# Initialize autoconf & automake.
+3
View File
@@ -2629,6 +2629,9 @@ yaml_parser_scan_tag_uri(yaml_parser_t *parser, int directive,
/* 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;
}
+5 -2
View File
@@ -143,9 +143,12 @@ yaml_string_join(
(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, \
+2 -2
View File
@@ -1,4 +1,4 @@
#define YAML_VERSION_MAJOR 0
#define YAML_VERSION_MINOR 1
#define YAML_VERSION_PATCH 5
#define YAML_VERSION_STRING "0.1.5"
#define YAML_VERSION_PATCH 6
#define YAML_VERSION_STRING "0.1.6"