From c88a9410ec26c8ab73409d110c1340e2d0e14fac Mon Sep 17 00:00:00 2001 From: Brendan Cully Date: Wed, 21 Sep 2005 13:23:43 +0000 Subject: [PATCH] Catch empty substring/regexp search arguments (precludes a segfault from dereferencing a null string pointer later). --- imap/imap.c | 3 +-- pattern.c | 5 +++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/imap/imap.c b/imap/imap.c index 0ad28a6a..9be978b8 100644 --- a/imap/imap.c +++ b/imap/imap.c @@ -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) diff --git a/pattern.c b/pattern.c index 6da5c449..dd043685 100644 --- 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 */ -- 2.40.0