Skip to content

Commit

Permalink
pairtaghighlighter: Fix crash if the tag name is missing
Browse files Browse the repository at this point in the history
Fixes #446 and #442.
  • Loading branch information
b4n committed Jun 15, 2016
1 parent 0b8c2e6 commit 5b461b3
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions pairtaghighlighter/src/pair_tag_highlighter.c
Expand Up @@ -169,8 +169,10 @@ static gboolean is_tag_empty(gchar *tagName)
const char *emptyTags[] = {"area", "base", "br", "col", "embed",
"hr", "img", "input", "keygen", "link", "meta",
"param", "source", "track", "wbr", "!DOCTYPE"};

unsigned int i;

g_return_val_if_fail(tagName != NULL, FALSE);

for(i=0; i<(sizeof(emptyTags)/sizeof(emptyTags[0])); i++)
{
if(strcmp(tagName, emptyTags[i]) == 0)
Expand Down Expand Up @@ -207,7 +209,7 @@ static gchar *get_tag_name(ScintillaObject *sci, gint openingBracket, gint closi
if(nameEnd-nameStart > MAX_TAG_NAME)
break;
}
return sci_get_contents_range(sci, nameStart, nameEnd-1);
return nameEnd > nameStart ? sci_get_contents_range(sci, nameStart, nameEnd-1) : NULL;
}


Expand All @@ -233,7 +235,7 @@ static void findMatchingOpeningTag(ScintillaObject *sci, gchar *tagName, gint op
gchar *matchingTagName = get_tag_name(sci, matchingOpeningBracket,
matchingClosingBracket,
isMatchingTagOpening);
if(strcmp(tagName, matchingTagName) == 0)
if(matchingTagName && strcmp(tagName, matchingTagName) == 0)
{
if(TRUE == isMatchingTagOpening)
openingTagsCount++;
Expand Down Expand Up @@ -289,7 +291,7 @@ static void findMatchingClosingTag(ScintillaObject *sci, gchar *tagName, gint cl
gchar *matchingTagName = get_tag_name(sci, matchingOpeningBracket,
matchingClosingBracket,
isMatchingTagOpening);
if(strcmp(tagName, matchingTagName) == 0)
if(matchingTagName && strcmp(tagName, matchingTagName) == 0)
{
if(TRUE == isMatchingTagOpening)
openingTagsCount++;
Expand Down Expand Up @@ -319,6 +321,9 @@ static void findMatchingTag(ScintillaObject *sci, gint openingBracket, gint clos
gboolean isTagOpening = is_tag_opening(sci, openingBracket);
gchar *tagName = get_tag_name(sci, openingBracket, closingBracket, isTagOpening);

if (!tagName)
return;

if(is_tag_self_closing(sci, closingBracket) || is_tag_empty(tagName)) {
highlight_tag(sci, openingBracket, closingBracket, EMPTY_TAG_COLOR);
} else {
Expand Down

0 comments on commit 5b461b3

Please sign in to comment.