diff options
Diffstat (limited to 'libmu_sieve')
-rw-r--r-- | libmu_sieve/extensions/moderator.c | 9 | ||||
-rw-r--r-- | libmu_sieve/tests.c | 15 |
2 files changed, 18 insertions, 6 deletions
diff --git a/libmu_sieve/extensions/moderator.c b/libmu_sieve/extensions/moderator.c index 3544d88f9..4fe2e8375 100644 --- a/libmu_sieve/extensions/moderator.c +++ b/libmu_sieve/extensions/moderator.c @@ -284,8 +284,13 @@ moderator_action (mu_sieve_machine_t mach) mu_sieve_abort (mach); } - mu_message_get_num_parts (msg, &nparts); - + rc = mu_message_get_num_parts (msg, &nparts); + if (rc) + { + mu_sieve_error (mach, "mu_message_get_num_parts: %s", mu_strerror (rc)); + mu_sieve_abort (mach); + } + if (nparts != 3) /* Mailman moderation requests have three parts */ { mu_sieve_error (mach, _("expected 3 parts, but found %lu"), diff --git a/libmu_sieve/tests.c b/libmu_sieve/tests.c index da3872f1c..c346747e4 100644 --- a/libmu_sieve/tests.c +++ b/libmu_sieve/tests.c @@ -176,17 +176,24 @@ sieve_test_header (mu_sieve_machine_t mach) v = mu_sieve_get_arg_untyped (mach, 1); clos.message = mach->msg; + clos.nparts = 0; if (mu_sieve_get_tag (mach, "mime", SVT_VOID, NULL)) { int ismime = 0; - mu_message_is_multipart (mach->msg, &ismime); + rc = mu_message_is_multipart (mach->msg, &ismime); + if (rc) + mu_diag_funcall (MU_DIAG_ERR, "mu_message_is_multipart", + NULL, rc); if (ismime) - mu_message_get_num_parts (mach->msg, &clos.nparts); + { + rc = mu_message_get_num_parts (mach->msg, &clos.nparts); + if (rc) + mu_diag_funcall (MU_DIAG_ERR, "mu_message_get_num_parts", + NULL, rc); + } } - else - clos.nparts = 0; rc = mu_sieve_vlist_compare (mach, h, v, retrieve_header, NULL, &clos); return rc; |