]> granicus.if.org Git - mutt/commitdiff
Skip 'attachments' directive if minor type is not a valid regexp
authorEmanuele Giaquinta <e.giaquinta@glauco.it>
Sun, 18 Jul 2010 21:09:06 +0000 (22:09 +0100)
committerEmanuele Giaquinta <e.giaquinta@glauco.it>
Sun, 18 Jul 2010 21:09:06 +0000 (22:09 +0100)
init.c

diff --git a/init.c b/init.c
index 399153c264e1690b399b80c766926b95e5da8549..56664776b5af8a00763c321416214a15e0cfcaac 100644 (file)
--- a/init.c
+++ b/init.c
@@ -916,6 +916,7 @@ static int parse_attach_list (BUFFER *buf, BUFFER *s, LIST **ldata, BUFFER *err)
   char *p;
   char *tmpminor;
   int len;
+  int ret;
 
   /* Find the last item in the list that data points to. */
   lastp = NULL;
@@ -965,10 +966,19 @@ static int parse_attach_list (BUFFER *buf, BUFFER *s, LIST **ldata, BUFFER *err)
     tmpminor[len+2] = '\0';
 
     a->major_int = mutt_check_mime_type(a->major);
-    regcomp(&a->minor_rx, tmpminor, REG_ICASE|REG_EXTENDED);
+    ret = regcomp(&a->minor_rx, tmpminor, REG_ICASE|REG_EXTENDED);
 
     FREE(&tmpminor);
 
+    if (ret)
+    {
+      regerror(ret, &a->minor_rx, err->data, err->dsize);
+      regfree(&a->minor_rx);
+      FREE(&a->major);
+      FREE(&a);
+      return -1;
+    }
+
     dprint(5, (debugfile, "parse_attach_list: added %s/%s [%d]\n",
                a->major, a->minor, a->major_int));