From 44a285a9a29e67872091350448bdb79e5c9435a7 Mon Sep 17 00:00:00 2001 From: ziyangc Date: Fri, 25 Nov 2022 11:35:44 +0800 Subject: [PATCH] Fix heap buffer overflow in function yaml_emitter_emit_flow_sequence_item, releated issue:https://github.com/yaml/libyaml/issues/258 --- src/emitter.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/emitter.c b/src/emitter.c index 609b28a4..3ad29591 100644 --- a/src/emitter.c +++ b/src/emitter.c @@ -758,8 +758,14 @@ yaml_emitter_emit_flow_sequence_item(yaml_emitter_t *emitter, if (event->type == YAML_SEQUENCE_END_EVENT) { emitter->flow_level --; - emitter->indent = POP(emitter, emitter->indents); - if (emitter->canonical && !first) { + if (!STACK_EMPTY(emitter, emitter->indents)) { + emitter->indent = POP(emitter, emitter->indents); + } + else { + emitter->indent = 0; // set to default + } + + if (emitter->canonical && !first) { if (!yaml_emitter_write_indicator(emitter, ",", 0, 0, 0)) return 0; if (!yaml_emitter_write_indent(emitter))