1 Description: Guard against overflows in indent and flow_level
2 Origin: upstream, https://bitbucket.org/xi/libyaml/commits/f859ed1eb757a3562b98a28a8ce69274bfd4b3f2,
3 https://bitbucket.org/xi/libyaml/commits/af3599437a87162554787c52d8b16eab553f537b
4 Last-Update: 2014-02-10
5 Applied-Upstream: 0.1.5
13 -yaml_parser_roll_indent(yaml_parser_t *parser, int column,
14 - int number, yaml_token_type_t type, yaml_mark_t mark);
15 +yaml_parser_roll_indent(yaml_parser_t *parser, ptrdiff_t column,
16 + ptrdiff_t number, yaml_token_type_t type, yaml_mark_t mark);
19 -yaml_parser_unroll_indent(yaml_parser_t *parser, int column);
20 +yaml_parser_unroll_indent(yaml_parser_t *parser, ptrdiff_t column);
27 int required = (!parser->flow_level
28 - && parser->indent == (int)parser->mark.column);
29 + && parser->indent == (ptrdiff_t)parser->mark.column);
32 * A simple key is required only when it is the first token in the current
33 @@ -1176,6 +1176,11 @@
35 /* Increase the flow level. */
37 + if (parser->flow_level == INT_MAX) {
38 + parser->error = YAML_MEMORY_ERROR;
49 -yaml_parser_roll_indent(yaml_parser_t *parser, int column,
50 - int number, yaml_token_type_t type, yaml_mark_t mark)
51 +yaml_parser_roll_indent(yaml_parser_t *parser, ptrdiff_t column,
52 + ptrdiff_t number, yaml_token_type_t type, yaml_mark_t mark)
56 @@ -1226,6 +1231,11 @@
57 if (!PUSH(parser, parser->indents, parser->indent))
60 + if (column > INT_MAX) {
61 + parser->error = YAML_MEMORY_ERROR;
65 parser->indent = column;
67 /* Create a token and insert it into the queue. */
72 -yaml_parser_unroll_indent(yaml_parser_t *parser, int column)
73 +yaml_parser_unroll_indent(yaml_parser_t *parser, ptrdiff_t column)
77 --- a/src/yaml_private.h
78 +++ b/src/yaml_private.h