[geany/geany-plugins] 5b461b: pairtaghighlighter: Fix crash if the tag name is missing

Colomban Wendling git-noreply at xxxxx
Wed Jun 15 13:15:57 UTC 2016


Branch:      refs/heads/master
Author:      Colomban Wendling <ban at herbesfolles.org>
Committer:   Colomban Wendling <ban at herbesfolles.org>
Date:        Wed, 15 Jun 2016 13:15:57 UTC
Commit:      5b461b3bdcf2c380e5f323e287be4ebd32f07059
             https://github.com/geany/geany-plugins/commit/5b461b3bdcf2c380e5f323e287be4ebd32f07059

Log Message:
-----------
pairtaghighlighter: Fix crash if the tag name is missing

Fixes #446 and #442.


Modified Paths:
--------------
    pairtaghighlighter/src/pair_tag_highlighter.c

Modified: pairtaghighlighter/src/pair_tag_highlighter.c
13 lines changed, 9 insertions(+), 4 deletions(-)
===================================================================
@@ -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)
@@ -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;
 }
 
 
@@ -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++;
@@ -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++;
@@ -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 {



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Plugins-Commits mailing list