From f9565289ff6375218662c9f85b3239b38ee58e8d Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Wed, 10 Feb 2016 09:51:54 -0800 Subject: Revert "Simplified condition for lazy line." This reverts commit 4d2d486333c358eb3adf3d0649163e319a3b8b69. This commit caused a valgrind invalid read. ==29731== Invalid read of size 4 ==29731== at 0x40500E: S_process_line (blocks.c:1050) ==29731== by 0x403CF7: S_parser_feed (blocks.c:526) ==29731== by 0x403BC9: cmark_parser_feed (blocks.c:494) ==29731== by 0x433A95: main (main.c:168) ==29731== Address 0x51d5b60 is 64 bytes inside a block of size 128 free'd ==29731== at 0x4C27D4E: free (vg_replace_malloc.c:427) ==29731== by 0x4015F0: S_free_nodes (node.c:134) ==29731== by 0x401634: cmark_node_free (node.c:142) ==29731== by 0x4033B1: finalize (blocks.c:259) ==29731== by 0x40365E: add_child (blocks.c:337) ==29731== by 0x4046D8: try_new_container_starts (blocks.c:836) ==29731== by 0x404F12: S_process_line (blocks.c:1015) ==29731== by 0x403CF7: S_parser_feed (blocks.c:526) ==29731== by 0x403BC9: cmark_parser_feed (blocks.c:494) ==29731== by 0x433A95: main (main.c:168) --- src/blocks.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/blocks.c b/src/blocks.c index c4593bf..fdf1106 100644 --- a/src/blocks.c +++ b/src/blocks.c @@ -1047,10 +1047,10 @@ static void S_process_line(cmark_parser *parser, const unsigned char *buffer, // and the line isn't blank, // then treat this as a "lazy continuation line" and add it to // the open paragraph. - if (parser->current->type == CMARK_NODE_PARAGRAPH && - parser->current != last_matched_container && - container == last_matched_container && - !parser->blank) { + if (parser->current != last_matched_container && + container == last_matched_container && !parser->blank && + parser->current->type == CMARK_NODE_PARAGRAPH && + cmark_strbuf_len(&parser->current->string_content) > 0) { add_line(parser->current, &input, parser); } else { // not a lazy continuation // Finalize any blocks that were not matched and set cur to container: -- cgit v1.2.3