openbsd-ports/mail/dovecot/patches/patch-src_lib-imap_imap-bodystructure_c
jolan 34678ea2bf fix three crashing bugs, bump PKGNAME
- searching address fields can crash sometimes
- auth process crashes if user doesn't have home directory set
- sme BODY and BODYSTRUCTURE replies missed data for message/rfc822 MIME
  parts causing clients to break
2003-09-23 06:34:32 +00:00

69 lines
2.3 KiB
Plaintext

$OpenBSD: patch-src_lib-imap_imap-bodystructure_c,v 1.1 2003/09/23 06:34:32 jolan Exp $
--- src/lib-imap/imap-bodystructure.c.orig 2003-06-24 18:12:56.000000000 -0500
+++ src/lib-imap/imap-bodystructure.c 2003-09-23 00:45:51.000000000 -0500
@@ -365,18 +365,23 @@ static void part_write_body(struct messa
data = t_new(struct message_part_body_data, 1);
}
- /* "content type" "subtype" */
- str_append(str, NVL(data->content_type, "\"text\""));
- str_append_c(str, ' ');
- if (data->content_subtype != NULL)
- str_append(str, data->content_subtype);
+ if (part->flags & MESSAGE_PART_FLAG_MESSAGE_RFC822)
+ str_append(str, "\"message\" \"rfc822\"");
else {
- if (data->content_type == NULL ||
- strcasecmp(data->content_type, "\"text\"") == 0)
- str_append(str, "\"plain\"");
- else
- str_append(str, "\"unknown\"");
+ /* "content type" "subtype" */
+ str_append(str, NVL(data->content_type, "\"text\""));
+ str_append_c(str, ' ');
+ if (data->content_subtype != NULL)
+ str_append(str, data->content_subtype);
+ else {
+ if (data->content_type == NULL ||
+ strcasecmp(data->content_type, "\"text\"") == 0)
+ str_append(str, "\"plain\"");
+ else
+ str_append(str, "\"unknown\"");
+
+ }
}
/* ("content type param key" "value" ...) */
@@ -405,23 +410,18 @@ static void part_write_body(struct messa
} else if (part->flags & MESSAGE_PART_FLAG_MESSAGE_RFC822) {
/* message/rfc822 contains envelope + body + line count */
struct message_part_body_data *child_data;
+ struct message_part_envelope_data *env_data;
i_assert(part->children != NULL);
i_assert(part->children->next == NULL);
- child_data = part->children->context;
+ child_data = part->children->context;
+ env_data = child_data != NULL ? child_data->envelope : NULL;
+
+ str_append(str, " (");
+ imap_envelope_write_part_data(env_data, str);
+ str_append(str, ") ");
- str_append_c(str, ' ');
- if (child_data != NULL && child_data->envelope != NULL) {
- str_append_c(str, '(');
- imap_envelope_write_part_data(child_data->envelope,
- str);
- str_append_c(str, ')');
- } else {
- /* buggy message */
- str_append(str, "NIL");
- }
- str_append_c(str, ' ');
part_write_bodystructure(part->children, str, extended);
str_printfa(str, " %u", part->body_size.lines);
}