]> granicus.if.org Git - mutt/commitdiff
Catch empty substring/regexp search arguments (precludes a segfault from
authorBrendan Cully <brendan@kublai.com>
Wed, 21 Sep 2005 13:23:43 +0000 (13:23 +0000)
committerBrendan Cully <brendan@kublai.com>
Wed, 21 Sep 2005 13:23:43 +0000 (13:23 +0000)
dereferencing a null string pointer later).

imap/imap.c
pattern.c

index 0ad28a6a377501f72f2044a68ddfb9e19158c6f3..9be978b841fbf54d90c7a92ea8dad893b3f5535d 100644 (file)
@@ -1334,8 +1334,6 @@ static int do_search (const pattern_t* search, int allpats)
  * match types, and does a better job (eg server doesn't support regexps). */
 static int imap_compile_search (const pattern_t* pat, BUFFER* buf)
 {
-  char term[STRING];
-
   if (! do_search (pat, 0))
     return 0;
 
@@ -1375,6 +1373,7 @@ static int imap_compile_search (const pattern_t* pat, BUFFER* buf)
   }
   else
   {
+    char term[STRING];
     char *delim;
 
     switch (pat->op)
index 6da5c44906166eaa4fee4e45fa4ae03e1e7f68f8..dd043685281231139c0b224d7af0d90730fac3d2 100644 (file)
--- a/pattern.c
+++ b/pattern.c
@@ -263,6 +263,11 @@ int eat_regexp (pattern_t *pat, BUFFER *s, BUFFER *err)
     snprintf (err->data, err->dsize, _("Error in expression: %s"), s->dptr);
     return (-1);
   }
+  if (!*buf.data)
+  {
+    snprintf (err->data, err->dsize, _("Empty expression"));
+    return (-1);
+  }
 
 #if 0
   /* If there are no RE metacharacters, use simple search anyway */