summaryrefslogtreecommitdiff
path: root/imap4d
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2019-07-23 08:04:38 +0300
committerSergey Poznyakoff <gray@gnu.org>2019-07-23 08:04:38 +0300
commit018df5d628f4e093f7e45c00b48ffc11b234d8cf (patch)
treec360d39b523c8327c6b029531b7a0f345dc4eecd /imap4d
parentbd46cf8d48852639e10e66a87500f7b9ec18e1ef (diff)
downloadmailutils-018df5d628f4e093f7e45c00b48ffc11b234d8cf.tar.gz
mailutils-018df5d628f4e093f7e45c00b48ffc11b234d8cf.tar.bz2
Minor fix
Check return from mu_message_get_num_parts
Diffstat (limited to 'imap4d')
-rw-r--r--imap4d/fetch.c32
-rw-r--r--imap4d/search.c24
2 files changed, 34 insertions, 22 deletions
diff --git a/imap4d/fetch.c b/imap4d/fetch.c
index 51921dd6b..fa0cea6c0 100644
--- a/imap4d/fetch.c
+++ b/imap4d/fetch.c
@@ -491,7 +491,6 @@ bodystructure (mu_message_t msg, int extension)
static int
fetch_bodystructure0 (mu_message_t message, int extension)
{
- size_t nparts = 1;
size_t i;
int is_multipart = 0;
@@ -500,20 +499,27 @@ fetch_bodystructure0 (mu_message_t message, int extension)
{
mu_content_type_t ct;
mu_header_t header = NULL;
+ size_t nparts;
int rc;
- mu_message_get_num_parts (message, &nparts);
-
- /* Get all the sub messages. */
- for (i = 1; i <= nparts; i++)
- {
- mu_message_t msg = NULL;
- mu_message_get_part (message, i, &msg);
- io_sendf ("(");
- fetch_bodystructure0 (msg, extension);
- io_sendf (")");
- } /* for () */
-
+ rc = mu_message_get_num_parts (message, &nparts);
+ if (rc)
+ {
+ mu_diag_funcall (MU_DIAG_ERR, "mu_message_get_num_parts", NULL, rc);
+ }
+ else
+ {
+ /* Get all the sub messages. */
+ for (i = 1; i <= nparts; i++)
+ {
+ mu_message_t msg = NULL;
+ mu_message_get_part (message, i, &msg);
+ io_sendf ("(");
+ fetch_bodystructure0 (msg, extension);
+ io_sendf (")");
+ } /* for () */
+ }
+
mu_message_get_header (message, &header);
/* The subtype. */
diff --git a/imap4d/search.c b/imap4d/search.c
index 8bc9770c1..003796447 100644
--- a/imap4d/search.c
+++ b/imap4d/search.c
@@ -1019,17 +1019,23 @@ _match_multipart (struct parsebuf *pb, mu_message_t msg, char *text)
{
size_t i, nparts;
- mu_message_get_num_parts (msg, &nparts);
-
- for (i = 1; i <= nparts; i++)
+ rc = mu_message_get_num_parts (msg, &nparts);
+ if (rc)
{
- mu_message_t submsg = NULL;
-
- if (mu_message_get_part (msg, i, &submsg) == 0)
+ mu_diag_funcall (MU_DIAG_ERR, "mu_message_get_num_parts", NULL, rc);
+ }
+ else
+ {
+ for (i = 1; i <= nparts; i++)
{
- result = _match_multipart (pb, submsg, text);
- if (result)
- break;
+ mu_message_t submsg = NULL;
+
+ if (mu_message_get_part (msg, i, &submsg) == 0)
+ {
+ result = _match_multipart (pb, submsg, text);
+ if (result)
+ break;
+ }
}
}
}

Return to:

Send suggestions and report system problems to the System administrator.