From: Fletcher T. Penney Date: Mon, 12 Nov 2018 23:00:27 +0000 (-0500) Subject: FIXED: Fix potential bug when reading OPML/ITMZ X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f52a7f4937f6214a50483962ffaa82ce6d903fc8;p=multimarkdown FIXED: Fix potential bug when reading OPML/ITMZ --- diff --git a/Sources/libMultiMarkdown/itmz-reader.c b/Sources/libMultiMarkdown/itmz-reader.c index d6cc8f3..69561ba 100644 --- a/Sources/libMultiMarkdown/itmz-reader.c +++ b/Sources/libMultiMarkdown/itmz-reader.c @@ -244,51 +244,54 @@ void parse_itmz_token_chain(mmd_engine * e, token * chain) { start = walker->start + 6; char * text = xml_extract_named_attribute(e->dstr->str, start, "text"); - len = strlen(text); - - if (strcmp(">>Preamble<<", text) != 0) { - if (out == metadata) { - print_xml_as_text(out, text, 0, len); - print_const(":\t"); - } else { - // Print header - - if (xml_scan_encoded_newline(text, len) == -1) { - // ATX header - for (int i = 0; i < header_level; ++i) { - print_char('#'); - } - print_char(' '); - } + if (text) { + len = strlen(text); - print_xml_as_text(out, text, 0, len); + if (strcmp(">>Preamble<<", text) != 0) { + if (out == metadata) { + print_xml_as_text(out, text, 0, len); + print_const(":\t"); + } else { + // Print header - if (xml_scan_encoded_newline(text, len) == -1) { - // ATX header - print_char(' '); + if (xml_scan_encoded_newline(text, len) == -1) { + // ATX header + for (int i = 0; i < header_level; ++i) { + print_char('#'); + } - for (int i = 0; i < header_level; ++i) { - print_char('#'); + print_char(' '); } - } else { - // Setext Header - switch (header_level) { - case 1: - print_const("\n======"); - break; - - default: - print_const("\n------"); - break; + + print_xml_as_text(out, text, 0, len); + + if (xml_scan_encoded_newline(text, len) == -1) { + // ATX header + print_char(' '); + + for (int i = 0; i < header_level; ++i) { + print_char('#'); + } + } else { + // Setext Header + switch (header_level) { + case 1: + print_const("\n======"); + break; + + default: + print_const("\n------"); + break; + } } - } - print_const("\n"); + print_const("\n"); + } } - } - free(text); + free(text); + } // Print contents of topic text = xml_extract_named_attribute(e->dstr->str, start, "note"); diff --git a/Sources/libMultiMarkdown/opml-reader.c b/Sources/libMultiMarkdown/opml-reader.c index dec368e..602892a 100644 --- a/Sources/libMultiMarkdown/opml-reader.c +++ b/Sources/libMultiMarkdown/opml-reader.c @@ -237,51 +237,54 @@ void parse_opml_token_chain(mmd_engine * e, token * chain) { start = walker->start + 8; char * text = xml_extract_named_attribute(e->dstr->str, start, "text"); - len = strlen(text); - - if (strcmp(">>Preamble<<", text) != 0) { - if (out == metadata) { - print_xml_as_text(out, text, 0, len); - print_const(":\t"); - } else { - // Print header - - if (xml_scan_encoded_newline(text, len) == -1) { - // ATX header - for (int i = 0; i < header_level; ++i) { - print_char('#'); - } - print_char(' '); - } + if (text) { + len = strlen(text); - print_xml_as_text(out, text, 0, len); + if (strcmp(">>Preamble<<", text) != 0) { + if (out == metadata) { + print_xml_as_text(out, text, 0, len); + print_const(":\t"); + } else { + // Print header - if (xml_scan_encoded_newline(text, len) == -1) { - // ATX header - print_char(' '); + if (xml_scan_encoded_newline(text, len) == -1) { + // ATX header + for (int i = 0; i < header_level; ++i) { + print_char('#'); + } - for (int i = 0; i < header_level; ++i) { - print_char('#'); + print_char(' '); } - } else { - // Print Setext Header - switch (header_level) { - case 1: - print_const("\n======"); - break; - - default: - print_const("\n------"); - break; + + print_xml_as_text(out, text, 0, len); + + if (xml_scan_encoded_newline(text, len) == -1) { + // ATX header + print_char(' '); + + for (int i = 0; i < header_level; ++i) { + print_char('#'); + } + } else { + // Print Setext Header + switch (header_level) { + case 1: + print_const("\n======"); + break; + + default: + print_const("\n------"); + break; + } } - } - print_const("\n"); + print_const("\n"); + } } - } - free(text); + free(text); + } // Print contents text = xml_extract_named_attribute(e->dstr->str, start, "_note");