summaryrefslogtreecommitdiff
path: root/mailbox/header.c
diff options
context:
space:
mode:
Diffstat (limited to 'mailbox/header.c')
-rw-r--r--mailbox/header.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/mailbox/header.c b/mailbox/header.c
index f423d1317..f1b286bb0 100644
--- a/mailbox/header.c
+++ b/mailbox/header.c
@@ -1039,6 +1039,7 @@ header_readline (mu_stream_t is, char *buffer, size_t buflen,
size_t ent_off;
int status;
size_t strsize;
+ char *start, *end;
if (is == NULL || buflen == 0)
return EINVAL;
@@ -1055,11 +1056,18 @@ header_readline (mu_stream_t is, char *buffer, size_t buflen,
return 0;
}
- strsize = MU_STR_SIZE (ent->nlen, ent->vlen) - ent_off;
buflen--; /* Account for the terminating nul */
- if (buflen > strsize)
- buflen = strsize;
+
mu_hdrent_fixup (header, ent);
+ start = MU_HDRENT_NAME (header, ent) + ent_off;
+ end = strchr (start, '\n');
+ if (end)
+ strsize = end - start + 1;
+ else
+ strsize = strlen (start);
+ if (strsize < buflen)
+ buflen = strsize;
+
memcpy (buffer, MU_HDRENT_NAME (header, ent) + ent_off, buflen);
buffer[buflen] = 0;
mu_hdrent_unroll_fixup (header, ent);

Return to:

Send suggestions and report system problems to the System administrator.