]> granicus.if.org Git - neomutt/commitdiff
fix buffer overflow, improve tag_list usage
authorKarel Zak <kzak@redhat.com>
Mon, 7 Oct 2013 18:34:57 +0000 (11:34 -0700)
committerRichard Russon <rich@flatcap.org>
Mon, 4 Apr 2016 15:30:07 +0000 (16:30 +0100)
mutt_notmuch.c

index a10591a8643d04e56398a0f4379d1c3be7f9423d..a1265cf28e1f410f33349e2ed024ed60fecf7359 100644 (file)
@@ -627,10 +627,8 @@ static void append_str_item(char **str, const char *item)
 
        safe_realloc(str, ssz + (ssz ? 1 : 0) + sz + 1);
        p = *str + ssz;
-       if (ssz) {
+       if (ssz)
            *p++ = ' ';
-           sz++;
-       }
        memcpy(p, item, sz + 1);
 }
 
@@ -685,10 +683,12 @@ static int update_header_tags(HEADER *h, notmuch_message_t *msg)
                append_str_item(&tstr, t);
        }
 
+       free_tag_list(&data->tag_list);
+       data->tag_list = tag_list;
+
        if (data->tags && tstr && strcmp(data->tags, tstr) == 0) {
                FREE(&tstr);
                FREE(&ttstr);
-               free_tag_list(&tag_list);
                dprint(2, (debugfile, "nm: tags unchanged\n"));
                return 1;
        }
@@ -696,7 +696,6 @@ static int update_header_tags(HEADER *h, notmuch_message_t *msg)
        /* free old version */
        FREE(&data->tags);
        FREE(&data->tags_transformed);
-       free_tag_list(&data->tag_list);
 
        /* new version */
        data->tags = tstr;
@@ -705,7 +704,6 @@ static int update_header_tags(HEADER *h, notmuch_message_t *msg)
        data->tags_transformed = ttstr;
        dprint(2, (debugfile, "nm: new tag transforms: '%s'\n", ttstr));
 
-       data->tag_list = tag_list;
        return 0;
 }