commonmarker 0.16.4 → 0.16.5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of commonmarker might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/ext/commonmarker/cmark/CMakeLists.txt +2 -1
- data/ext/commonmarker/cmark/Makefile +10 -2
- data/ext/commonmarker/cmark/README.md +16 -6
- data/ext/commonmarker/cmark/api_test/main.c +2 -2
- data/ext/commonmarker/cmark/changelog.txt +5 -0
- data/ext/commonmarker/cmark/man/man3/cmark-gfm.3 +23 -6
- data/ext/commonmarker/cmark/src/CMakeLists.txt +11 -0
- data/ext/commonmarker/cmark/src/arena.c +2 -1
- data/ext/commonmarker/cmark/src/blocks.c +4 -2
- data/ext/commonmarker/cmark/src/cmark.h +14 -5
- data/ext/commonmarker/cmark/src/commonmark.c +6 -3
- data/ext/commonmarker/cmark/src/inlines.c +9 -7
- data/ext/commonmarker/cmark/src/latex.c +23 -9
- data/ext/commonmarker/cmark/src/node.c +1 -1
- data/ext/commonmarker/cmark/src/scanners.c +2 -2
- data/ext/commonmarker/cmark/src/scanners.re +1 -1
- data/ext/commonmarker/cmark/test/cmark-fuzz.c +28 -0
- data/ext/commonmarker/cmark/test/fuzzing_dictionary +49 -0
- data/ext/commonmarker/cmark/test/regression.txt +18 -0
- data/ext/commonmarker/cmark/test/run-cmark-fuzz +4 -0
- data/ext/commonmarker/cmark/test/spec.txt +27 -16
- data/ext/commonmarker/cmark/tools/Dockerfile +15 -12
- data/lib/commonmarker/version.rb +1 -1
- metadata +5 -51
- data/ext/commonmarker/cmark/test/afl_dictionary/asterisk +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/attr_generic +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/attr_href +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/attr_xml_lang +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/attr_xmlns +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/backslash +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/backtick +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/colon +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/dashes +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/double_quote +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/entity_builtin +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/entity_decimal +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/entity_external +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/entity_hex +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/equals +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/exclamation +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/greater_than +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/hash +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/hyphen +0 -0
- data/ext/commonmarker/cmark/test/afl_dictionary/indent +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/left_bracket +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/left_paren +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/less_than +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/plus +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/right_bracket +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/right_paren +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/single_quote +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/string_any +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/string_brackets +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/string_cdata +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/string_dashes +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/string_empty_dblquotes +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/string_empty_quotes +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/string_idrefs +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/string_parentheses +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/string_pcdata +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/tag_cdata +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/tag_close +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/tag_doctype +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/tag_element +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/tag_entity +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/tag_notation +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/tag_open +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/tag_open_close +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/tag_open_exclamation +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/tag_open_q +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/tag_sq2_close +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/tag_xml_q +0 -1
- data/ext/commonmarker/cmark/test/afl_dictionary/underscore +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 095c88f0b8335861ecd1f2fd3036eb38e3ba15e5
|
4
|
+
data.tar.gz: 523409323276c59e1da4efda9c08d846b512f599
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0bc5a2a5d1193c8beb136e392db2fdb1f323e0b87f73aa4e2a54eb0ebc8240518a0151852e82b64ed2e8469e4786f41b8b166162cd0b929e38e6e385c5b6c8b2
|
7
|
+
data.tar.gz: 7bd29b88abaaacc24e05fa03bbfccffb9e703d0f57ec0efe903aa502bd7db3efdb6ef8e4682cdb36f58f04828e763f5f988a82f42f02c125fcd6e0f9e8ec01ee
|
@@ -19,12 +19,13 @@ set(PROJECT_NAME "cmark")
|
|
19
19
|
set(PROJECT_VERSION_MAJOR 0)
|
20
20
|
set(PROJECT_VERSION_MINOR 27)
|
21
21
|
set(PROJECT_VERSION_PATCH 1)
|
22
|
-
set(PROJECT_VERSION_GFM
|
22
|
+
set(PROJECT_VERSION_GFM 2)
|
23
23
|
set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}.gfm.${PROJECT_VERSION_GFM} )
|
24
24
|
|
25
25
|
option(CMARK_TESTS "Build cmark tests and enable testing" ON)
|
26
26
|
option(CMARK_STATIC "Build static libcmark-gfm library" ON)
|
27
27
|
option(CMARK_SHARED "Build shared libcmark-gfm library" ON)
|
28
|
+
option(CMARK_LIB_FUZZER "Build libFuzzer fuzzing harness" OFF)
|
28
29
|
|
29
30
|
add_subdirectory(src)
|
30
31
|
add_subdirectory(extensions)
|
@@ -16,6 +16,7 @@ BENCHFILE=$(BENCHDIR)/benchinput.md
|
|
16
16
|
ALLTESTS=alltests.md
|
17
17
|
NUMRUNS?=20
|
18
18
|
CMARK=$(BUILDDIR)/src/cmark-gfm
|
19
|
+
CMARK_FUZZ=$(BUILDDIR)/src/cmark-fuzz
|
19
20
|
PROG?=$(CMARK)
|
20
21
|
VERSION?=$(SPECVERSION)
|
21
22
|
RELEASE?=CommonMark-$(VERSION)
|
@@ -24,7 +25,7 @@ CLANG_CHECK?=clang-check
|
|
24
25
|
CLANG_FORMAT=clang-format-3.5 -style llvm -sort-includes=0 -i
|
25
26
|
AFL_PATH?=/usr/local/bin
|
26
27
|
|
27
|
-
.PHONY: all cmake_build leakcheck clean fuzztest test debug ubsan asan mingw archive newbench bench format update-spec afl clang-check docker
|
28
|
+
.PHONY: all cmake_build leakcheck clean fuzztest test debug ubsan asan mingw archive newbench bench format update-spec afl clang-check docker libFuzzer
|
28
29
|
|
29
30
|
all: cmake_build man/man3/cmark-gfm.3
|
30
31
|
|
@@ -79,11 +80,18 @@ afl:
|
|
79
80
|
$(AFL_PATH)/afl-fuzz \
|
80
81
|
-i test/afl_test_cases \
|
81
82
|
-o test/afl_results \
|
82
|
-
-x test/
|
83
|
+
-x test/fuzzing_dictionary \
|
83
84
|
$(AFL_OPTIONS) \
|
84
85
|
-t 100 \
|
85
86
|
$(CMARK) -e table -e strikethrough -e autolink -e tagfilter $(CMARK_OPTS)
|
86
87
|
|
88
|
+
libFuzzer:
|
89
|
+
@[ -n "$(LIB_FUZZER_PATH)" ] || { echo '$$LIB_FUZZER_PATH not set'; false; }
|
90
|
+
mkdir -p $(BUILDDIR)
|
91
|
+
cd $(BUILDDIR) && cmake -DCMAKE_BUILD_TYPE=Asan -DCMARK_LIB_FUZZER=ON -DCMAKE_LIB_FUZZER_PATH=$(LIB_FUZZER_PATH) ..
|
92
|
+
$(MAKE) -j2 -C $(BUILDDIR) cmark-fuzz
|
93
|
+
test/run-cmark-fuzz $(CMARK_FUZZ)
|
94
|
+
|
87
95
|
clang-check: all
|
88
96
|
${CLANG_CHECK} -p build -analyze src/*.c
|
89
97
|
|
@@ -59,12 +59,14 @@ It is easy to use `libcmark` in python, lua, ruby, and other dynamic
|
|
59
59
|
languages: see the `wrappers/` subdirectory for some simple examples.
|
60
60
|
|
61
61
|
There are also libraries that wrap `libcmark` for
|
62
|
-
[
|
63
|
-
[Haskell](
|
64
|
-
[
|
65
|
-
[
|
66
|
-
[Perl](https://metacpan.org/release/CommonMark),
|
67
|
-
[
|
62
|
+
[Go](https://github.com/rhinoman/go-commonmark),
|
63
|
+
[Haskell](https://hackage.haskell.org/package/cmark),
|
64
|
+
[Ruby](https://github.com/gjtorikian/commonmarker),
|
65
|
+
[Lua](https://github.com/jgm/cmark-lua),
|
66
|
+
[Perl](https://metacpan.org/release/CommonMark),
|
67
|
+
[Python](https://pypi.python.org/pypi/paka.cmark),
|
68
|
+
[R](https://cran.r-project.org/package=commonmark) and
|
69
|
+
[Scala](https://github.com/sparsetech/cmark-scala).
|
68
70
|
|
69
71
|
Installing
|
70
72
|
----------
|
@@ -126,6 +128,13 @@ To do a more systematic fuzz test with [american fuzzy lop]:
|
|
126
128
|
|
127
129
|
AFL_PATH=/path/to/afl_directory make afl
|
128
130
|
|
131
|
+
Fuzzing with [libFuzzer] is also supported but, because libFuzzer is still
|
132
|
+
under active development, may not work with your system-installed version of
|
133
|
+
clang. Assuming LLVM has been built in `$HOME/src/llvm/build` the fuzzer can be
|
134
|
+
run with:
|
135
|
+
|
136
|
+
CC="$HOME/src/llvm/build/bin/clang" LIB_FUZZER_PATH="$HOME/src/llvm/lib/Fuzzer/libFuzzer.a" make libFuzzer
|
137
|
+
|
129
138
|
To make a release tarball and zip archive:
|
130
139
|
|
131
140
|
make archive
|
@@ -193,3 +202,4 @@ most of the C library's API and its test harness.
|
|
193
202
|
[Build Status]: https://img.shields.io/travis/github/cmark/master.svg?style=flat
|
194
203
|
[Windows Build Status]: https://ci.appveyor.com/api/projects/status/wv7ifhqhv5itm3d5?svg=true
|
195
204
|
[american fuzzy lop]: http://lcamtuf.coredump.cx/afl/
|
205
|
+
[libFuzzer]: http://llvm.org/docs/LibFuzzer.html
|
@@ -59,8 +59,8 @@ static void constructor(test_batch_runner *runner) {
|
|
59
59
|
"default is list type is bullet");
|
60
60
|
INT_EQ(runner, cmark_node_get_list_delim(node), CMARK_NO_DELIM,
|
61
61
|
"default is list delim is NO_DELIM");
|
62
|
-
INT_EQ(runner, cmark_node_get_list_start(node),
|
63
|
-
"default is list start is
|
62
|
+
INT_EQ(runner, cmark_node_get_list_start(node), 0,
|
63
|
+
"default is list start is 0");
|
64
64
|
INT_EQ(runner, cmark_node_get_list_tight(node), 0,
|
65
65
|
"default is list is loose");
|
66
66
|
break;
|
@@ -1,4 +1,4 @@
|
|
1
|
-
.TH cmark-gfm 3 "
|
1
|
+
.TH cmark-gfm 3 "April 03, 2017" "LOCAL" "Library Functions Manual"
|
2
2
|
.SH
|
3
3
|
NAME
|
4
4
|
.PP
|
@@ -397,7 +397,8 @@ of the type, or \f[C]"<unknown>"\f[].
|
|
397
397
|
|
398
398
|
.PP
|
399
399
|
Returns the string contents of \f[I]node\f[], or an empty string if none
|
400
|
-
is set.
|
400
|
+
is set. Returns NULL if called on a node that does not have string
|
401
|
+
content.
|
401
402
|
|
402
403
|
.PP
|
403
404
|
\fIint\f[] \fBcmark_node_set_literal\f[](\fIcmark_node *node\f[], \fIconst char *content\f[])
|
@@ -504,7 +505,8 @@ Returns code blocks fencing details
|
|
504
505
|
|
505
506
|
.PP
|
506
507
|
Returns the URL of a link or image \f[I]node\f[], or an empty string if
|
507
|
-
no URL is set.
|
508
|
+
no URL is set. Returns NULL if called on a node that is not a link or
|
509
|
+
image.
|
508
510
|
|
509
511
|
.PP
|
510
512
|
\fIint\f[] \fBcmark_node_set_url\f[](\fIcmark_node *node\f[], \fIconst char *url\f[])
|
@@ -518,7 +520,8 @@ on failure.
|
|
518
520
|
|
519
521
|
.PP
|
520
522
|
Returns the title of a link or image \f[I]node\f[], or an empty string
|
521
|
-
if no title is set.
|
523
|
+
if no title is set. Returns NULL if called on a node that is not a link
|
524
|
+
or image.
|
522
525
|
|
523
526
|
.PP
|
524
527
|
\fIint\f[] \fBcmark_node_set_title\f[](\fIcmark_node *node\f[], \fIconst char *title\f[])
|
@@ -532,7 +535,8 @@ on failure.
|
|
532
535
|
|
533
536
|
.PP
|
534
537
|
Returns the literal "on enter" text for a custom \f[I]node\f[], or an
|
535
|
-
empty string if no on_enter is set.
|
538
|
+
empty string if no on_enter is set. Returns NULL if called on a
|
539
|
+
non\-custom node.
|
536
540
|
|
537
541
|
.PP
|
538
542
|
\fIint\f[] \fBcmark_node_set_on_enter\f[](\fIcmark_node *node\f[], \fIconst char *on_enter\f[])
|
@@ -547,7 +551,8 @@ success 0 on failure.
|
|
547
551
|
|
548
552
|
.PP
|
549
553
|
Returns the literal "on exit" text for a custom \f[I]node\f[], or an
|
550
|
-
empty string if no on_exit is set.
|
554
|
+
empty string if no on_exit is set. Returns NULL if called on a
|
555
|
+
non\-custom node.
|
551
556
|
|
552
557
|
.PP
|
553
558
|
\fIint\f[] \fBcmark_node_set_on_exit\f[](\fIcmark_node *node\f[], \fIconst char *on_exit\f[])
|
@@ -862,6 +867,18 @@ Render \f[C]softbreak\f[] elements as spaces.
|
|
862
867
|
.SS
|
863
868
|
Options affecting parsing
|
864
869
|
|
870
|
+
.PP
|
871
|
+
.nf
|
872
|
+
\fC
|
873
|
+
.RS 0n
|
874
|
+
#define CMARK_OPT_NORMALIZE (1 << 8)
|
875
|
+
.RE
|
876
|
+
\f[]
|
877
|
+
.fi
|
878
|
+
|
879
|
+
.PP
|
880
|
+
Legacy option (no effect).
|
881
|
+
|
865
882
|
.PP
|
866
883
|
.nf
|
867
884
|
\fC
|
@@ -203,3 +203,14 @@ endif()
|
|
203
203
|
if(CMAKE_BUILD_TYPE STREQUAL "Ubsan")
|
204
204
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=undefined")
|
205
205
|
endif()
|
206
|
+
|
207
|
+
if(CMARK_LIB_FUZZER)
|
208
|
+
set(FUZZ_HARNESS "cmark-fuzz")
|
209
|
+
add_executable(${FUZZ_HARNESS} ../test/cmark-fuzz.c ${LIBRARY_SOURCES})
|
210
|
+
target_link_libraries(${FUZZ_HARNESS} "${CMAKE_LIB_FUZZER_PATH}")
|
211
|
+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize-coverage=trace-pc-guard")
|
212
|
+
|
213
|
+
# cmark is written in C but the libFuzzer runtime is written in C++ which
|
214
|
+
# needs to link against the C++ runtime. Explicitly link it into cmark-fuzz
|
215
|
+
set_target_properties(${FUZZ_HARNESS} PROPERTIES LINK_FLAGS "-lstdc++")
|
216
|
+
endif()
|
@@ -71,7 +71,8 @@ static void *arena_calloc(size_t nmem, size_t size) {
|
|
71
71
|
}
|
72
72
|
void *ptr = (uint8_t *) A->ptr + A->used;
|
73
73
|
A->used += sz;
|
74
|
-
|
74
|
+
size_t new_sz = nmem * size;
|
75
|
+
memcpy(ptr, &new_sz, sizeof(new_sz));
|
75
76
|
return (uint8_t *) ptr + sizeof(size_t);
|
76
77
|
}
|
77
78
|
|
@@ -460,8 +460,8 @@ static bufsize_t parse_list_marker(cmark_mem *mem, cmark_chunk *input,
|
|
460
460
|
data->marker_offset = 0; // will be adjusted later
|
461
461
|
data->list_type = CMARK_BULLET_LIST;
|
462
462
|
data->bullet_char = c;
|
463
|
-
data->start =
|
464
|
-
data->delimiter =
|
463
|
+
data->start = 0;
|
464
|
+
data->delimiter = CMARK_NO_DELIM;
|
465
465
|
data->tight = false;
|
466
466
|
} else if (cmark_isdigit(c)) {
|
467
467
|
int start = 0;
|
@@ -1247,6 +1247,8 @@ static void S_process_line(cmark_parser *parser, const unsigned char *buffer,
|
|
1247
1247
|
else
|
1248
1248
|
cmark_strbuf_put(&parser->curline, buffer, bytes);
|
1249
1249
|
|
1250
|
+
bytes = parser->curline.size;
|
1251
|
+
|
1250
1252
|
// ensure line ends with a newline:
|
1251
1253
|
if (bytes == 0 || !S_is_line_end_char(parser->curline.ptr[bytes - 1]))
|
1252
1254
|
cmark_strbuf_putc(&parser->curline, '\n');
|
@@ -337,7 +337,8 @@ CMARK_EXPORT
|
|
337
337
|
const char *cmark_node_get_type_string(cmark_node *node);
|
338
338
|
|
339
339
|
/** Returns the string contents of 'node', or an empty
|
340
|
-
string if none is set.
|
340
|
+
string if none is set. Returns NULL if called on a
|
341
|
+
node that does not have string content.
|
341
342
|
*/
|
342
343
|
CMARK_EXPORT const char *cmark_node_get_literal(cmark_node *node);
|
343
344
|
|
@@ -415,7 +416,8 @@ CMARK_EXPORT int cmark_node_set_fenced(cmark_node * node, int fenced,
|
|
415
416
|
CMARK_EXPORT int cmark_node_get_fenced(cmark_node *node, int *length, int *offset, char *character);
|
416
417
|
|
417
418
|
/** Returns the URL of a link or image 'node', or an empty string
|
418
|
-
if no URL is set.
|
419
|
+
if no URL is set. Returns NULL if called on a node that is
|
420
|
+
not a link or image.
|
419
421
|
*/
|
420
422
|
CMARK_EXPORT const char *cmark_node_get_url(cmark_node *node);
|
421
423
|
|
@@ -425,7 +427,8 @@ CMARK_EXPORT const char *cmark_node_get_url(cmark_node *node);
|
|
425
427
|
CMARK_EXPORT int cmark_node_set_url(cmark_node *node, const char *url);
|
426
428
|
|
427
429
|
/** Returns the title of a link or image 'node', or an empty
|
428
|
-
string if no title is set.
|
430
|
+
string if no title is set. Returns NULL if called on a node
|
431
|
+
that is not a link or image.
|
429
432
|
*/
|
430
433
|
CMARK_EXPORT const char *cmark_node_get_title(cmark_node *node);
|
431
434
|
|
@@ -435,7 +438,8 @@ CMARK_EXPORT const char *cmark_node_get_title(cmark_node *node);
|
|
435
438
|
CMARK_EXPORT int cmark_node_set_title(cmark_node *node, const char *title);
|
436
439
|
|
437
440
|
/** Returns the literal "on enter" text for a custom 'node', or
|
438
|
-
an empty string if no on_enter is set.
|
441
|
+
an empty string if no on_enter is set. Returns NULL if called
|
442
|
+
on a non-custom node.
|
439
443
|
*/
|
440
444
|
CMARK_EXPORT const char *cmark_node_get_on_enter(cmark_node *node);
|
441
445
|
|
@@ -447,7 +451,8 @@ CMARK_EXPORT int cmark_node_set_on_enter(cmark_node *node,
|
|
447
451
|
const char *on_enter);
|
448
452
|
|
449
453
|
/** Returns the literal "on exit" text for a custom 'node', or
|
450
|
-
an empty string if no on_exit is set.
|
454
|
+
an empty string if no on_exit is set. Returns NULL if
|
455
|
+
called on a non-custom node.
|
451
456
|
*/
|
452
457
|
CMARK_EXPORT const char *cmark_node_get_on_exit(cmark_node *node);
|
453
458
|
|
@@ -690,6 +695,10 @@ char *cmark_render_latex_with_mem(cmark_node *root, int options, int width, cmar
|
|
690
695
|
* ### Options affecting parsing
|
691
696
|
*/
|
692
697
|
|
698
|
+
/** Legacy option (no effect).
|
699
|
+
*/
|
700
|
+
#define CMARK_OPT_NORMALIZE (1 << 8)
|
701
|
+
|
693
702
|
/** Validate UTF-8 in the input before parsing, replacing illegal
|
694
703
|
* sequences with the replacement character U+FFFD.
|
695
704
|
*/
|
@@ -1,6 +1,7 @@
|
|
1
1
|
#include <stdlib.h>
|
2
2
|
#include <stdio.h>
|
3
3
|
#include <string.h>
|
4
|
+
#include <stdint.h>
|
4
5
|
#include <assert.h>
|
5
6
|
|
6
7
|
#include "config.h"
|
@@ -83,7 +84,9 @@ static int longest_backtick_sequence(const char *code) {
|
|
83
84
|
}
|
84
85
|
|
85
86
|
static int shortest_unused_backtick_sequence(const char *code) {
|
86
|
-
|
87
|
+
// note: if the shortest sequence is >= 32, this returns 32
|
88
|
+
// so as not to overflow the bit array.
|
89
|
+
uint32_t used = 1;
|
87
90
|
int current = 0;
|
88
91
|
size_t i = 0;
|
89
92
|
size_t code_len = strlen(code);
|
@@ -91,7 +94,7 @@ static int shortest_unused_backtick_sequence(const char *code) {
|
|
91
94
|
if (code[i] == '`') {
|
92
95
|
current++;
|
93
96
|
} else {
|
94
|
-
if (current) {
|
97
|
+
if (current > 0 && current < 32) {
|
95
98
|
used |= (1 << current);
|
96
99
|
}
|
97
100
|
current = 0;
|
@@ -100,7 +103,7 @@ static int shortest_unused_backtick_sequence(const char *code) {
|
|
100
103
|
}
|
101
104
|
// return number of first bit that is 0:
|
102
105
|
i = 0;
|
103
|
-
while (used & 1) {
|
106
|
+
while (i < 32 && used & 1) {
|
104
107
|
used = used >> 1;
|
105
108
|
i++;
|
106
109
|
}
|
@@ -322,13 +322,13 @@ static int scan_delims(subject *subj, unsigned char c, bool *can_open,
|
|
322
322
|
after_char = 10;
|
323
323
|
}
|
324
324
|
left_flanking = numdelims > 0 && !cmark_utf8proc_is_space(after_char) &&
|
325
|
-
!
|
326
|
-
|
327
|
-
|
325
|
+
(!cmark_utf8proc_is_punctuation(after_char) ||
|
326
|
+
cmark_utf8proc_is_space(before_char) ||
|
327
|
+
cmark_utf8proc_is_punctuation(before_char));
|
328
328
|
right_flanking = numdelims > 0 && !cmark_utf8proc_is_space(before_char) &&
|
329
|
-
!
|
330
|
-
|
331
|
-
|
329
|
+
(!cmark_utf8proc_is_punctuation(before_char) ||
|
330
|
+
cmark_utf8proc_is_space(after_char) ||
|
331
|
+
cmark_utf8proc_is_punctuation(after_char));
|
332
332
|
if (c == '_') {
|
333
333
|
*can_open = left_flanking &&
|
334
334
|
(!right_flanking || cmark_utf8proc_is_punctuation(before_char));
|
@@ -863,7 +863,9 @@ static bufsize_t manual_scan_link_url(cmark_chunk *input, bufsize_t offset) {
|
|
863
863
|
}
|
864
864
|
} else {
|
865
865
|
while (i < input->len) {
|
866
|
-
if (input->data[i] == '\\'
|
866
|
+
if (input->data[i] == '\\' &&
|
867
|
+
i + 1 < input-> len &&
|
868
|
+
cmark_ispunct(input->data[i+1]))
|
867
869
|
i += 2;
|
868
870
|
else if (input->data[i] == '(') {
|
869
871
|
++nb_p;
|
@@ -181,6 +181,10 @@ static link_type get_link_type(cmark_node *node) {
|
|
181
181
|
|
182
182
|
link_text = node->first_child;
|
183
183
|
cmark_consolidate_text_nodes(link_text);
|
184
|
+
|
185
|
+
if (!link_text)
|
186
|
+
return NO_LINK;
|
187
|
+
|
184
188
|
realurl = (char *)url;
|
185
189
|
realurllen = (int)url_len;
|
186
190
|
if (strncmp(realurl, "mailto:", 7) == 0) {
|
@@ -218,11 +222,10 @@ static int S_get_enumlevel(cmark_node *node) {
|
|
218
222
|
static int S_render_node(cmark_renderer *renderer, cmark_node *node,
|
219
223
|
cmark_event_type ev_type, int options) {
|
220
224
|
int list_number;
|
225
|
+
int enumlevel;
|
221
226
|
char list_number_string[LIST_NUMBER_STRING_SIZE];
|
222
227
|
bool entering = (ev_type == CMARK_EVENT_ENTER);
|
223
228
|
cmark_list_type list_type;
|
224
|
-
const char *roman_numerals[] = {"", "i", "ii", "iii", "iv", "v",
|
225
|
-
"vi", "vii", "viii", "ix", "x"};
|
226
229
|
bool allow_wrap = renderer->width > 0 && !(CMARK_OPT_NOBREAKS & options);
|
227
230
|
|
228
231
|
if (node->extension && node->extension->latex_render_func) {
|
@@ -253,13 +256,24 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node,
|
|
253
256
|
CR();
|
254
257
|
list_number = cmark_node_get_list_start(node);
|
255
258
|
if (list_number > 1) {
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
259
|
+
enumlevel = S_get_enumlevel(node);
|
260
|
+
// latex normally supports only five levels
|
261
|
+
if (enumlevel >= 1 && enumlevel <= 5) {
|
262
|
+
snprintf(list_number_string, LIST_NUMBER_STRING_SIZE, "%d",
|
263
|
+
list_number);
|
264
|
+
LIT("\\setcounter{enum");
|
265
|
+
switch(enumlevel) {
|
266
|
+
case 1: LIT("i"); break;
|
267
|
+
case 2: LIT("ii"); break;
|
268
|
+
case 3: LIT("iii"); break;
|
269
|
+
case 4: LIT("iv"); break;
|
270
|
+
case 5: LIT("v"); break;
|
271
|
+
default: LIT("i"); break;
|
272
|
+
}
|
273
|
+
LIT("}{");
|
274
|
+
OUT(list_number_string, false, NORMAL);
|
275
|
+
LIT("}");
|
276
|
+
}
|
263
277
|
CR();
|
264
278
|
}
|
265
279
|
} else {
|
@@ -752,7 +752,7 @@ bufsize_t _scan_autolink_uri(const unsigned char *p) {
|
|
752
752
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
753
753
|
0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
754
754
|
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
755
|
-
128, 128, 128, 128,
|
755
|
+
128, 128, 128, 128, 128, 128, 0, 128, 128, 128, 128, 128, 128, 128,
|
756
756
|
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
757
757
|
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
758
758
|
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
@@ -839,7 +839,7 @@ bufsize_t _scan_autolink_uri(const unsigned char *p) {
|
|
839
839
|
}
|
840
840
|
if (yych <= 0xEC) {
|
841
841
|
if (yych <= 0xC1) {
|
842
|
-
if (yych <= '
|
842
|
+
if (yych <= ' ')
|
843
843
|
goto yy45;
|
844
844
|
if (yych <= '>')
|
845
845
|
goto yy85;
|
@@ -91,7 +91,7 @@ bufsize_t _scan_autolink_uri(const unsigned char *p)
|
|
91
91
|
const unsigned char *marker = NULL;
|
92
92
|
const unsigned char *start = p;
|
93
93
|
/*!re2c
|
94
|
-
scheme [:][^\x00-\x20
|
94
|
+
scheme [:][^\x00-\x20>]*[>] { return (bufsize_t)(p - start); }
|
95
95
|
* { return 0; }
|
96
96
|
*/
|
97
97
|
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
#include <stdint.h>
|
2
|
+
#include <stdlib.h>
|
3
|
+
#include "cmark.h"
|
4
|
+
|
5
|
+
int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
|
6
|
+
int options = 0;
|
7
|
+
if (size > sizeof(options)) {
|
8
|
+
/* First 4 bytes of input are treated as options */
|
9
|
+
int options = *(const int *)data;
|
10
|
+
|
11
|
+
/* Mask off valid option bits */
|
12
|
+
options = options & (CMARK_OPT_SOURCEPOS | CMARK_OPT_HARDBREAKS | CMARK_OPT_SAFE | CMARK_OPT_NOBREAKS | CMARK_OPT_NORMALIZE | CMARK_OPT_VALIDATE_UTF8 | CMARK_OPT_SMART);
|
13
|
+
|
14
|
+
/* Remainder of input is the markdown */
|
15
|
+
const char *markdown = (const char *)(data + sizeof(options));
|
16
|
+
const size_t markdown_size = size - sizeof(options);
|
17
|
+
cmark_node *doc = cmark_parse_document(markdown, markdown_size, options);
|
18
|
+
|
19
|
+
free(cmark_render_commonmark(doc, options, 80));
|
20
|
+
free(cmark_render_html(doc, options, NULL));
|
21
|
+
free(cmark_render_latex(doc, options, 80));
|
22
|
+
free(cmark_render_man(doc, options, 80));
|
23
|
+
free(cmark_render_xml(doc, options));
|
24
|
+
|
25
|
+
cmark_node_free(doc);
|
26
|
+
}
|
27
|
+
return 0;
|
28
|
+
}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
asterisk="*"
|
2
|
+
attr_generic=" a=\"1\""
|
3
|
+
attr_href=" href=\"1\""
|
4
|
+
attr_xml_lang=" xml:lang=\"1\""
|
5
|
+
attr_xmlns=" xmlns=\"1\""
|
6
|
+
backslash="\\"
|
7
|
+
backtick="`"
|
8
|
+
colon=":"
|
9
|
+
dashes="---"
|
10
|
+
double_quote="\""
|
11
|
+
entity_builtin="<"
|
12
|
+
entity_decimal=""
|
13
|
+
entity_external="&a;"
|
14
|
+
entity_hex=""
|
15
|
+
equals="==="
|
16
|
+
exclamation="!"
|
17
|
+
greater_than=">"
|
18
|
+
hash="#"
|
19
|
+
hyphen="-"
|
20
|
+
indent=" "
|
21
|
+
left_bracket="["
|
22
|
+
left_paren="("
|
23
|
+
less_than="<"
|
24
|
+
plus="+"
|
25
|
+
right_bracket="]"
|
26
|
+
right_paren=")"
|
27
|
+
single_quote="'"
|
28
|
+
string_any="ANY"
|
29
|
+
string_brackets="[]"
|
30
|
+
string_cdata="CDATA"
|
31
|
+
string_dashes="--"
|
32
|
+
string_empty_dblquotes="\"\""
|
33
|
+
string_empty_quotes="''"
|
34
|
+
string_idrefs="IDREFS"
|
35
|
+
string_parentheses="()"
|
36
|
+
string_pcdata="#PCDATA"
|
37
|
+
tag_cdata="<![CDATA["
|
38
|
+
tag_close="</a>"
|
39
|
+
tag_doctype="<!DOCTYPE"
|
40
|
+
tag_element="<!ELEMENT"
|
41
|
+
tag_entity="<!ENTITY"
|
42
|
+
tag_notation="<!NOTATION"
|
43
|
+
tag_open="<a>"
|
44
|
+
tag_open_close="<a />"
|
45
|
+
tag_open_exclamation="<!"
|
46
|
+
tag_open_q="<?"
|
47
|
+
tag_sq2_close="]]>"
|
48
|
+
tag_xml_q="<?xml?>"
|
49
|
+
underscore="_"
|
@@ -74,3 +74,21 @@ a***b* c*
|
|
74
74
|
<p>a*<em><em>b</em> c</em></p>
|
75
75
|
````````````````````````````````
|
76
76
|
|
77
|
+
Issue #193 - unescaped left angle brackets in link destination
|
78
|
+
|
79
|
+
```````````````````````````````` example
|
80
|
+
[a]
|
81
|
+
|
82
|
+
[a]: <te<st>
|
83
|
+
.
|
84
|
+
<p><a href="te%3Cst">a</a></p>
|
85
|
+
````````````````````````````````
|
86
|
+
|
87
|
+
Issue #192 - escaped spaces in link destination
|
88
|
+
|
89
|
+
|
90
|
+
```````````````````````````````` example
|
91
|
+
[a](te\ st)
|
92
|
+
.
|
93
|
+
<p>[a](te\ st)</p>
|
94
|
+
````````````````````````````````
|
@@ -23,10 +23,12 @@ are hence known as **extensions**, and highlighted as such.
|
|
23
23
|
## What is Markdown?
|
24
24
|
|
25
25
|
Markdown is a plain text format for writing structured documents,
|
26
|
-
based on conventions
|
27
|
-
usenet posts. It was developed
|
28
|
-
|
29
|
-
|
26
|
+
based on conventions for indicating formatting in email
|
27
|
+
and usenet posts. It was developed by John Gruber (with
|
28
|
+
help from Aaron Swartz) and released in 2004 in the form of a
|
29
|
+
[syntax description](http://daringfireball.net/projects/markdown/syntax)
|
30
|
+
and a Perl script (`Markdown.pl`) for converting Markdown to
|
31
|
+
HTML. In the next decade, dozens of implementations were
|
30
32
|
developed in many languages. Some extended the original
|
31
33
|
Markdown syntax with conventions for footnotes, tables, and
|
32
34
|
other document elements. Some allowed Markdown documents to be
|
@@ -324,7 +326,7 @@ form feed (`U+000C`), or carriage return (`U+000D`).
|
|
324
326
|
characters].
|
325
327
|
|
326
328
|
A [Unicode whitespace character](@) is
|
327
|
-
any code point in the Unicode `Zs`
|
329
|
+
any code point in the Unicode `Zs` general category, or a tab (`U+0009`),
|
328
330
|
carriage return (`U+000D`), newline (`U+000A`), or form feed
|
329
331
|
(`U+000C`).
|
330
332
|
|
@@ -343,7 +345,7 @@ is `!`, `"`, `#`, `$`, `%`, `&`, `'`, `(`, `)`,
|
|
343
345
|
|
344
346
|
A [punctuation character](@) is an [ASCII
|
345
347
|
punctuation character] or anything in
|
346
|
-
the Unicode
|
348
|
+
the general Unicode categories `Pc`, `Pd`, `Pe`, `Pf`, `Pi`, `Po`, or `Ps`.
|
347
349
|
|
348
350
|
## Tabs
|
349
351
|
|
@@ -414,8 +416,8 @@ as indentation with four spaces would:
|
|
414
416
|
Normally the `>` that begins a block quote may be followed
|
415
417
|
optionally by a space, which is not considered part of the
|
416
418
|
content. In the following case `>` is followed by a tab,
|
417
|
-
which is treated as if it were expanded into spaces.
|
418
|
-
Since one of
|
419
|
+
which is treated as if it were expanded into three spaces.
|
420
|
+
Since one of these spaces is considered part of the
|
419
421
|
delimiter, `foo` is considered to be indented six spaces
|
420
422
|
inside the block quote context, so we get an indented
|
421
423
|
code block starting with two spaces.
|
@@ -493,7 +495,7 @@ We can think of a document as a sequence of
|
|
493
495
|
quotations, lists, headings, rules, and code blocks. Some blocks (like
|
494
496
|
block quotes and list items) contain other blocks; others (like
|
495
497
|
headings and paragraphs) contain [inline](@) content---text,
|
496
|
-
links, emphasized text, images, code, and so on.
|
498
|
+
links, emphasized text, images, code spans, and so on.
|
497
499
|
|
498
500
|
## Precedence
|
499
501
|
|
@@ -6045,6 +6047,15 @@ we just have literal backticks:
|
|
6045
6047
|
<p>`foo</p>
|
6046
6048
|
````````````````````````````````
|
6047
6049
|
|
6050
|
+
The following case also illustrates the need for opening and
|
6051
|
+
closing backtick strings to be equal in length:
|
6052
|
+
|
6053
|
+
```````````````````````````````` example
|
6054
|
+
`foo``bar``
|
6055
|
+
.
|
6056
|
+
<p>`foo<code>bar</code></p>
|
6057
|
+
````````````````````````````````
|
6058
|
+
|
6048
6059
|
|
6049
6060
|
## Emphasis and strong emphasis
|
6050
6061
|
|
@@ -6099,14 +6110,14 @@ characters that is not preceded or followed by a `_` character.
|
|
6099
6110
|
|
6100
6111
|
A [left-flanking delimiter run](@) is
|
6101
6112
|
a [delimiter run] that is (a) not followed by [Unicode whitespace],
|
6102
|
-
and (b)
|
6113
|
+
and (b) not followed by a [punctuation character], or
|
6103
6114
|
preceded by [Unicode whitespace] or a [punctuation character].
|
6104
6115
|
For purposes of this definition, the beginning and the end of
|
6105
6116
|
the line count as Unicode whitespace.
|
6106
6117
|
|
6107
6118
|
A [right-flanking delimiter run](@) is
|
6108
6119
|
a [delimiter run] that is (a) not preceded by [Unicode whitespace],
|
6109
|
-
and (b)
|
6120
|
+
and (b) not preceded by a [punctuation character], or
|
6110
6121
|
followed by [Unicode whitespace] or a [punctuation character].
|
6111
6122
|
For purposes of this definition, the beginning and the end of
|
6112
6123
|
the line count as Unicode whitespace.
|
@@ -6185,7 +6196,7 @@ The following rules define emphasis and strong emphasis:
|
|
6185
6196
|
7. A double `**` [can close strong emphasis](@)
|
6186
6197
|
iff it is part of a [right-flanking delimiter run].
|
6187
6198
|
|
6188
|
-
8. A double `__` [can close strong emphasis]
|
6199
|
+
8. A double `__` [can close strong emphasis] iff
|
6189
6200
|
it is part of a [right-flanking delimiter run]
|
6190
6201
|
and either (a) not part of a [left-flanking delimiter run]
|
6191
6202
|
or (b) part of a [left-flanking delimiter run]
|
@@ -6226,7 +6237,7 @@ the following principles resolve ambiguity:
|
|
6226
6237
|
`<em><em>...</em></em>`.
|
6227
6238
|
|
6228
6239
|
14. An interpretation `<em><strong>...</strong></em>` is always
|
6229
|
-
preferred to `<strong><em
|
6240
|
+
preferred to `<strong><em>...</em></strong>`.
|
6230
6241
|
|
6231
6242
|
15. When two potential emphasis or strong emphasis spans overlap,
|
6232
6243
|
so that the second begins before the first ends and ends after
|
@@ -8605,11 +8616,11 @@ The link labels are case-insensitive:
|
|
8605
8616
|
````````````````````````````````
|
8606
8617
|
|
8607
8618
|
|
8608
|
-
If you just want bracketed text, you can
|
8609
|
-
|
8619
|
+
If you just want a literal `!` followed by bracketed text, you can
|
8620
|
+
backslash-escape the opening `[`:
|
8610
8621
|
|
8611
8622
|
```````````````````````````````` example
|
8612
|
-
|
8623
|
+
!\[foo]
|
8613
8624
|
|
8614
8625
|
[foo]: /url "title"
|
8615
8626
|
.
|
@@ -1,20 +1,19 @@
|
|
1
1
|
FROM debian:jessie
|
2
2
|
|
3
3
|
RUN apt-get update && apt-get install -y \
|
4
|
-
build-essential
|
4
|
+
build-essential \
|
5
|
+
autoconf \
|
6
|
+
libtool \
|
5
7
|
git \
|
6
8
|
pkg-config \
|
7
|
-
&& apt-get clean
|
8
|
-
|
9
|
-
RUN apt-get install -y \
|
10
|
-
cmake \
|
11
9
|
gdb \
|
12
10
|
valgrind \
|
13
|
-
python3
|
14
|
-
|
15
|
-
RUN apt-get install -y \
|
11
|
+
python3 \
|
16
12
|
wget \
|
17
|
-
clang
|
13
|
+
clang \
|
14
|
+
man \
|
15
|
+
clang-format-3.5 \
|
16
|
+
&& apt-get clean
|
18
17
|
|
19
18
|
RUN wget http://lcamtuf.coredump.cx/afl/releases/afl-latest.tgz && \
|
20
19
|
tar xf afl-latest.tgz && \
|
@@ -23,8 +22,6 @@ RUN wget http://lcamtuf.coredump.cx/afl/releases/afl-latest.tgz && \
|
|
23
22
|
cd .. && \
|
24
23
|
rm -rf afl-*
|
25
24
|
|
26
|
-
RUN apt-get install -y man
|
27
|
-
|
28
25
|
RUN wget https://github.com/skvadrik/re2c/releases/download/0.15.3/re2c-0.15.3.tar.gz && \
|
29
26
|
tar xf re2c-0.15.3.tar.gz && \
|
30
27
|
cd re2c-* && \
|
@@ -33,4 +30,10 @@ RUN wget https://github.com/skvadrik/re2c/releases/download/0.15.3/re2c-0.15.3.t
|
|
33
30
|
cd .. && \
|
34
31
|
rm -rf re2c-*
|
35
32
|
|
36
|
-
RUN
|
33
|
+
RUN wget https://cmake.org/files/v3.8/cmake-3.8.2.tar.gz && \
|
34
|
+
tar xf cmake-3.8.2.tar.gz && \
|
35
|
+
cd cmake-* && \
|
36
|
+
./bootstrap && \
|
37
|
+
make install && \
|
38
|
+
cd .. && \
|
39
|
+
rm -rf cmake-*
|
data/lib/commonmarker/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: commonmarker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.16.
|
4
|
+
version: 0.16.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Garen Torikian
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-06-
|
12
|
+
date: 2017-06-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ruby-enum
|
@@ -238,63 +238,17 @@ files:
|
|
238
238
|
- ext/commonmarker/cmark/src/xml.c
|
239
239
|
- ext/commonmarker/cmark/suppressions
|
240
240
|
- ext/commonmarker/cmark/test/CMakeLists.txt
|
241
|
-
- ext/commonmarker/cmark/test/afl_dictionary/asterisk
|
242
|
-
- ext/commonmarker/cmark/test/afl_dictionary/attr_generic
|
243
|
-
- ext/commonmarker/cmark/test/afl_dictionary/attr_href
|
244
|
-
- ext/commonmarker/cmark/test/afl_dictionary/attr_xml_lang
|
245
|
-
- ext/commonmarker/cmark/test/afl_dictionary/attr_xmlns
|
246
|
-
- ext/commonmarker/cmark/test/afl_dictionary/backslash
|
247
|
-
- ext/commonmarker/cmark/test/afl_dictionary/backtick
|
248
|
-
- ext/commonmarker/cmark/test/afl_dictionary/colon
|
249
|
-
- ext/commonmarker/cmark/test/afl_dictionary/dashes
|
250
|
-
- ext/commonmarker/cmark/test/afl_dictionary/double_quote
|
251
|
-
- ext/commonmarker/cmark/test/afl_dictionary/entity_builtin
|
252
|
-
- ext/commonmarker/cmark/test/afl_dictionary/entity_decimal
|
253
|
-
- ext/commonmarker/cmark/test/afl_dictionary/entity_external
|
254
|
-
- ext/commonmarker/cmark/test/afl_dictionary/entity_hex
|
255
|
-
- ext/commonmarker/cmark/test/afl_dictionary/equals
|
256
|
-
- ext/commonmarker/cmark/test/afl_dictionary/exclamation
|
257
|
-
- ext/commonmarker/cmark/test/afl_dictionary/greater_than
|
258
|
-
- ext/commonmarker/cmark/test/afl_dictionary/hash
|
259
|
-
- ext/commonmarker/cmark/test/afl_dictionary/hyphen
|
260
|
-
- ext/commonmarker/cmark/test/afl_dictionary/indent
|
261
|
-
- ext/commonmarker/cmark/test/afl_dictionary/left_bracket
|
262
|
-
- ext/commonmarker/cmark/test/afl_dictionary/left_paren
|
263
|
-
- ext/commonmarker/cmark/test/afl_dictionary/less_than
|
264
|
-
- ext/commonmarker/cmark/test/afl_dictionary/plus
|
265
|
-
- ext/commonmarker/cmark/test/afl_dictionary/right_bracket
|
266
|
-
- ext/commonmarker/cmark/test/afl_dictionary/right_paren
|
267
|
-
- ext/commonmarker/cmark/test/afl_dictionary/single_quote
|
268
|
-
- ext/commonmarker/cmark/test/afl_dictionary/string_any
|
269
|
-
- ext/commonmarker/cmark/test/afl_dictionary/string_brackets
|
270
|
-
- ext/commonmarker/cmark/test/afl_dictionary/string_cdata
|
271
|
-
- ext/commonmarker/cmark/test/afl_dictionary/string_dashes
|
272
|
-
- ext/commonmarker/cmark/test/afl_dictionary/string_empty_dblquotes
|
273
|
-
- ext/commonmarker/cmark/test/afl_dictionary/string_empty_quotes
|
274
|
-
- ext/commonmarker/cmark/test/afl_dictionary/string_idrefs
|
275
|
-
- ext/commonmarker/cmark/test/afl_dictionary/string_parentheses
|
276
|
-
- ext/commonmarker/cmark/test/afl_dictionary/string_pcdata
|
277
|
-
- ext/commonmarker/cmark/test/afl_dictionary/tag_cdata
|
278
|
-
- ext/commonmarker/cmark/test/afl_dictionary/tag_close
|
279
|
-
- ext/commonmarker/cmark/test/afl_dictionary/tag_doctype
|
280
|
-
- ext/commonmarker/cmark/test/afl_dictionary/tag_element
|
281
|
-
- ext/commonmarker/cmark/test/afl_dictionary/tag_entity
|
282
|
-
- ext/commonmarker/cmark/test/afl_dictionary/tag_notation
|
283
|
-
- ext/commonmarker/cmark/test/afl_dictionary/tag_open
|
284
|
-
- ext/commonmarker/cmark/test/afl_dictionary/tag_open_close
|
285
|
-
- ext/commonmarker/cmark/test/afl_dictionary/tag_open_exclamation
|
286
|
-
- ext/commonmarker/cmark/test/afl_dictionary/tag_open_q
|
287
|
-
- ext/commonmarker/cmark/test/afl_dictionary/tag_sq2_close
|
288
|
-
- ext/commonmarker/cmark/test/afl_dictionary/tag_xml_q
|
289
|
-
- ext/commonmarker/cmark/test/afl_dictionary/underscore
|
290
241
|
- ext/commonmarker/cmark/test/afl_test_cases/test.md
|
242
|
+
- ext/commonmarker/cmark/test/cmark-fuzz.c
|
291
243
|
- ext/commonmarker/cmark/test/cmark.py
|
292
244
|
- ext/commonmarker/cmark/test/entity_tests.py
|
293
245
|
- ext/commonmarker/cmark/test/extensions.txt
|
246
|
+
- ext/commonmarker/cmark/test/fuzzing_dictionary
|
294
247
|
- ext/commonmarker/cmark/test/normalize.py
|
295
248
|
- ext/commonmarker/cmark/test/pathological_tests.py
|
296
249
|
- ext/commonmarker/cmark/test/regression.txt
|
297
250
|
- ext/commonmarker/cmark/test/roundtrip_tests.py
|
251
|
+
- ext/commonmarker/cmark/test/run-cmark-fuzz
|
298
252
|
- ext/commonmarker/cmark/test/smart_punct.txt
|
299
253
|
- ext/commonmarker/cmark/test/spec.txt
|
300
254
|
- ext/commonmarker/cmark/test/spec_tests.py
|
@@ -1 +0,0 @@
|
|
1
|
-
*
|
@@ -1 +0,0 @@
|
|
1
|
-
a="1"
|
@@ -1 +0,0 @@
|
|
1
|
-
href="1"
|
@@ -1 +0,0 @@
|
|
1
|
-
xml:lang="1"
|
@@ -1 +0,0 @@
|
|
1
|
-
xmlns="1"
|
@@ -1 +0,0 @@
|
|
1
|
-
\
|
@@ -1 +0,0 @@
|
|
1
|
-
`
|
@@ -1 +0,0 @@
|
|
1
|
-
:
|
@@ -1 +0,0 @@
|
|
1
|
-
---
|
@@ -1 +0,0 @@
|
|
1
|
-
"
|
@@ -1 +0,0 @@
|
|
1
|
-
<
|
@@ -1 +0,0 @@
|
|
1
|
-

|
@@ -1 +0,0 @@
|
|
1
|
-
&a;
|
@@ -1 +0,0 @@
|
|
1
|
-

|
@@ -1 +0,0 @@
|
|
1
|
-
===
|
@@ -1 +0,0 @@
|
|
1
|
-
!
|
@@ -1 +0,0 @@
|
|
1
|
-
>
|
@@ -1 +0,0 @@
|
|
1
|
-
#
|
File without changes
|
@@ -1 +0,0 @@
|
|
1
|
-
|
@@ -1 +0,0 @@
|
|
1
|
-
[
|
@@ -1 +0,0 @@
|
|
1
|
-
(
|
@@ -1 +0,0 @@
|
|
1
|
-
<
|
@@ -1 +0,0 @@
|
|
1
|
-
+
|
@@ -1 +0,0 @@
|
|
1
|
-
]
|
@@ -1 +0,0 @@
|
|
1
|
-
)
|
@@ -1 +0,0 @@
|
|
1
|
-
'
|
@@ -1 +0,0 @@
|
|
1
|
-
ANY
|
@@ -1 +0,0 @@
|
|
1
|
-
[]
|
@@ -1 +0,0 @@
|
|
1
|
-
CDATA
|
@@ -1 +0,0 @@
|
|
1
|
-
--
|
@@ -1 +0,0 @@
|
|
1
|
-
""
|
@@ -1 +0,0 @@
|
|
1
|
-
''
|
@@ -1 +0,0 @@
|
|
1
|
-
IDREFS
|
@@ -1 +0,0 @@
|
|
1
|
-
()
|
@@ -1 +0,0 @@
|
|
1
|
-
#PCDATA
|
@@ -1 +0,0 @@
|
|
1
|
-
<![CDATA[
|
@@ -1 +0,0 @@
|
|
1
|
-
</a>
|
@@ -1 +0,0 @@
|
|
1
|
-
<!DOCTYPE
|
@@ -1 +0,0 @@
|
|
1
|
-
<!ELEMENT
|
@@ -1 +0,0 @@
|
|
1
|
-
<!ENTITY
|
@@ -1 +0,0 @@
|
|
1
|
-
<!NOTATION
|
@@ -1 +0,0 @@
|
|
1
|
-
<a>
|
@@ -1 +0,0 @@
|
|
1
|
-
<a />
|
@@ -1 +0,0 @@
|
|
1
|
-
<!
|
@@ -1 +0,0 @@
|
|
1
|
-
<?
|
@@ -1 +0,0 @@
|
|
1
|
-
]]>
|
@@ -1 +0,0 @@
|
|
1
|
-
<?xml?>
|
@@ -1 +0,0 @@
|
|
1
|
-
_
|