Fossil SCM
Fix a potential endless loop in the markdown formatter. Enhance the fuzzer to run inputs on both the Fossil-wiki and the markdown formatters on each iteration.
Commit
4b46fb91e39f3dc06a2a6a49893d356de9128429eca41ece56fa6339d7becfc6
Parent
9d962928718e95f…
2 files changed
+2
-4
+4
-2
+2
-4
| --- src/fuzz.c | ||
| +++ src/fuzz.c | ||
| @@ -74,15 +74,13 @@ | ||
| 74 | 74 | blob_init(&in, 0, 0); |
| 75 | 75 | blob_append(&in, (char*)aData, (int)nByte); |
| 76 | 76 | blob_zero(&out); |
| 77 | 77 | switch( eFuzzType ){ |
| 78 | 78 | case FUZZ_WIKI: { |
| 79 | + Blob title = BLOB_INITIALIZER; | |
| 79 | 80 | wiki_convert(&in, &out, 0); |
| 80 | - break; | |
| 81 | - } | |
| 82 | - case FUZZ_MARKDOWN: { | |
| 83 | - Blob title = BLOB_INITIALIZER; | |
| 81 | + blob_reset(&out); | |
| 84 | 82 | markdown_to_html(&in, &title, &out); |
| 85 | 83 | blob_reset(&title); |
| 86 | 84 | break; |
| 87 | 85 | } |
| 88 | 86 | } |
| 89 | 87 |
| --- src/fuzz.c | |
| +++ src/fuzz.c | |
| @@ -74,15 +74,13 @@ | |
| 74 | blob_init(&in, 0, 0); |
| 75 | blob_append(&in, (char*)aData, (int)nByte); |
| 76 | blob_zero(&out); |
| 77 | switch( eFuzzType ){ |
| 78 | case FUZZ_WIKI: { |
| 79 | wiki_convert(&in, &out, 0); |
| 80 | break; |
| 81 | } |
| 82 | case FUZZ_MARKDOWN: { |
| 83 | Blob title = BLOB_INITIALIZER; |
| 84 | markdown_to_html(&in, &title, &out); |
| 85 | blob_reset(&title); |
| 86 | break; |
| 87 | } |
| 88 | } |
| 89 |
| --- src/fuzz.c | |
| +++ src/fuzz.c | |
| @@ -74,15 +74,13 @@ | |
| 74 | blob_init(&in, 0, 0); |
| 75 | blob_append(&in, (char*)aData, (int)nByte); |
| 76 | blob_zero(&out); |
| 77 | switch( eFuzzType ){ |
| 78 | case FUZZ_WIKI: { |
| 79 | Blob title = BLOB_INITIALIZER; |
| 80 | wiki_convert(&in, &out, 0); |
| 81 | blob_reset(&out); |
| 82 | markdown_to_html(&in, &title, &out); |
| 83 | blob_reset(&title); |
| 84 | break; |
| 85 | } |
| 86 | } |
| 87 |
+4
-2
| --- src/markdown.c | ||
| +++ src/markdown.c | ||
| @@ -2026,12 +2026,14 @@ | ||
| 2026 | 2026 | beg += parse_list(ob, rndr, txt_data, end, 0); |
| 2027 | 2027 | }else if( prefix_oli(txt_data, end) ){ |
| 2028 | 2028 | beg += parse_list(ob, rndr, txt_data, end, MKD_LIST_ORDERED); |
| 2029 | 2029 | }else if( has_table && is_tableline(txt_data, end) ){ |
| 2030 | 2030 | beg += parse_table(ob, rndr, txt_data, end); |
| 2031 | - }else if( prefix_fencedcode(txt_data, end) ){ | |
| 2032 | - beg += char_codespan(ob, rndr, txt_data, 0, end); | |
| 2031 | + }else if( prefix_fencedcode(txt_data, end) | |
| 2032 | + && (i = char_codespan(ob, rndr, txt_data, 0, end))!=0 | |
| 2033 | + ){ | |
| 2034 | + beg += i; | |
| 2033 | 2035 | }else{ |
| 2034 | 2036 | beg += parse_paragraph(ob, rndr, txt_data, end); |
| 2035 | 2037 | } |
| 2036 | 2038 | } |
| 2037 | 2039 | } |
| 2038 | 2040 |
| --- src/markdown.c | |
| +++ src/markdown.c | |
| @@ -2026,12 +2026,14 @@ | |
| 2026 | beg += parse_list(ob, rndr, txt_data, end, 0); |
| 2027 | }else if( prefix_oli(txt_data, end) ){ |
| 2028 | beg += parse_list(ob, rndr, txt_data, end, MKD_LIST_ORDERED); |
| 2029 | }else if( has_table && is_tableline(txt_data, end) ){ |
| 2030 | beg += parse_table(ob, rndr, txt_data, end); |
| 2031 | }else if( prefix_fencedcode(txt_data, end) ){ |
| 2032 | beg += char_codespan(ob, rndr, txt_data, 0, end); |
| 2033 | }else{ |
| 2034 | beg += parse_paragraph(ob, rndr, txt_data, end); |
| 2035 | } |
| 2036 | } |
| 2037 | } |
| 2038 |
| --- src/markdown.c | |
| +++ src/markdown.c | |
| @@ -2026,12 +2026,14 @@ | |
| 2026 | beg += parse_list(ob, rndr, txt_data, end, 0); |
| 2027 | }else if( prefix_oli(txt_data, end) ){ |
| 2028 | beg += parse_list(ob, rndr, txt_data, end, MKD_LIST_ORDERED); |
| 2029 | }else if( has_table && is_tableline(txt_data, end) ){ |
| 2030 | beg += parse_table(ob, rndr, txt_data, end); |
| 2031 | }else if( prefix_fencedcode(txt_data, end) |
| 2032 | && (i = char_codespan(ob, rndr, txt_data, 0, end))!=0 |
| 2033 | ){ |
| 2034 | beg += i; |
| 2035 | }else{ |
| 2036 | beg += parse_paragraph(ob, rndr, txt_data, end); |
| 2037 | } |
| 2038 | } |
| 2039 | } |
| 2040 |