summaryrefslogtreecommitdiff
path: root/libsieve
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2006-10-03 16:47:20 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2006-10-03 16:47:20 +0000
commit857fabe93d20ae33dac48aae3b22ad608d016d38 (patch)
treeda4572fa60c3a05ab420529e4bba89ee37001a2b /libsieve
parenta0d4116c9f1b684efe0b04ef080b9c9e05b803cf (diff)
downloadmailutils-857fabe93d20ae33dac48aae3b22ad608d016d38.tar.gz
mailutils-857fabe93d20ae33dac48aae3b22ad608d016d38.tar.bz2
(sieve_code_command): Avoid dead loop if a tag
is not given the argument it requires. Improve the diagnostics. Bug reported by Kostas Zorbadelos.
Diffstat (limited to 'libsieve')
-rw-r--r--libsieve/prog.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/libsieve/prog.c b/libsieve/prog.c
index cf7817d60..4af308ca6 100644
--- a/libsieve/prog.c
+++ b/libsieve/prog.c
@@ -194,6 +194,14 @@ sieve_code_command (mu_sieve_register_t *reg, mu_list_t arglist)
if (tag->argtype != SVT_VOID)
{
mu_iterator_next (itr);
+ if (mu_iterator_is_done (itr))
+ {
+ sieve_compile_error (sieve_filename, sieve_line_num,
+ _("required argument for tag %s is missing"),
+ tag->name);
+ err = 1;
+ break;
+ }
mu_iterator_current (itr, (void **)&tagrec.arg);
}
else

Return to:

Send suggestions and report system problems to the System administrator.