diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2006-10-03 16:47:20 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2006-10-03 16:47:20 +0000 |
commit | 857fabe93d20ae33dac48aae3b22ad608d016d38 (patch) | |
tree | da4572fa60c3a05ab420529e4bba89ee37001a2b /libsieve | |
parent | a0d4116c9f1b684efe0b04ef080b9c9e05b803cf (diff) | |
download | mailutils-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.c | 8 |
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 |