Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-15-SP4:Update
cmark
cmark-gfm-CVE-2023-22486.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File cmark-gfm-CVE-2023-22486.patch of Package cmark
diff --unified --recursive --text --new-file --color cmark-0.30.2.old/src/inlines.c cmark-0.30.2.new/src/inlines.c --- cmark-0.30.2.old/src/inlines.c 2021-09-24 23:56:14.000000000 +0800 +++ cmark-0.30.2.new/src/inlines.c 2023-03-22 12:26:45.728198282 +0800 @@ -66,6 +66,7 @@ bracket *last_bracket; bufsize_t backticks[MAXBACKTICKS + 1]; bool scanned_for_backticks; + bool no_link_openers; } subject; static CMARK_INLINE bool S_is_line_end_char(char c) { @@ -207,6 +208,7 @@ e->backticks[i] = 0; } e->scanned_for_backticks = false; + e->no_link_openers = true; } static CMARK_INLINE int isbacktick(int c) { return (c == '`'); } @@ -551,6 +553,9 @@ b->position = subj->pos; b->bracket_after = false; subj->last_bracket = b; + if (!image) { + subj->no_link_openers = false; + } } // Assumes the subject has a c at the current position. @@ -1108,16 +1113,16 @@ return make_str(subj, subj->pos - 1, subj->pos - 1, cmark_chunk_literal("]")); } - if (!opener->active) { + // If we got here, we matched a potential link/image text. + // Now we check to see if it's a link/image. + is_image = opener->image; + + if (!is_image && subj->no_link_openers) { // take delimiter off stack pop_bracket(subj); return make_str(subj, subj->pos - 1, subj->pos - 1, cmark_chunk_literal("]")); } - // If we got here, we matched a potential link/image text. - // Now we check to see if it's a link/image. - is_image = opener->image; - after_link_text_pos = subj->pos; // First, look for an inline link. @@ -1213,21 +1218,11 @@ process_emphasis(subj, opener->position); pop_bracket(subj); - // Now, if we have a link, we also want to deactivate earlier link - // delimiters. (This code can be removed if we decide to allow links + // Now, if we have a link, we also want to deactivate links until + // we get a new opener. (This code can be removed if we decide to allow links // inside links.) if (!is_image) { - opener = subj->last_bracket; - while (opener != NULL) { - if (!opener->image) { - if (!opener->active) { - break; - } else { - opener->active = false; - } - } - opener = opener->previous; - } + subj->no_link_openers = true; } return NULL;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor