summaryrefslogtreecommitdiff
path: root/mailinfo.c
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2020-02-11 17:18:52 (GMT)
committerJunio C Hamano <gitster@pobox.com>2020-02-11 18:17:16 (GMT)
commitb6537d83ee30693efb17a35321b8bd03b752033a (patch)
treed38e40bd1f8d2478a3b1f5cc9af6917840d9becc /mailinfo.c
parent517b60564e2c69cbb79895e04b24a6393273398f (diff)
downloadgit-b6537d83ee30693efb17a35321b8bd03b752033a.zip
git-b6537d83ee30693efb17a35321b8bd03b752033a.tar.gz
git-b6537d83ee30693efb17a35321b8bd03b752033a.tar.bz2
mailinfo: treat header values as C strings
We read each header line into a strbuf, which means that we could in theory handle header values with embedded NUL bytes. But in practice, the values we parse out are passed to decode_header(), which uses strstr(), strchr(), etc. And we would not expect such bytes anyway; they are forbidden by RFC822, etc. and any non-ASCII characters should be encoded with RFC2047 encoding. So let's switch to using strbuf_addstr(), which saves us some length computations (and will enable further cleanups in this code). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'mailinfo.c')
-rw-r--r--mailinfo.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/mailinfo.c b/mailinfo.c
index 402ef04..59d5a8b 100644
--- a/mailinfo.c
+++ b/mailinfo.c
@@ -557,7 +557,7 @@ static int check_header(struct mailinfo *mi,
/* Unwrap inline B and Q encoding, and optionally
* normalize the meta information to utf8.
*/
- strbuf_add(&sb, line->buf + len + 2, line->len - len - 2);
+ strbuf_addstr(&sb, line->buf + len + 2);
decode_header(mi, &sb);
handle_header(&hdr_data[i], &sb);
ret = 1;
@@ -568,7 +568,7 @@ static int check_header(struct mailinfo *mi,
/* Content stuff */
if (cmp_header(line, "Content-Type")) {
len = strlen("Content-Type: ");
- strbuf_add(&sb, line->buf + len, line->len - len);
+ strbuf_addstr(&sb, line->buf + len);
decode_header(mi, &sb);
handle_content_type(mi, &sb);
ret = 1;
@@ -576,7 +576,7 @@ static int check_header(struct mailinfo *mi,
}
if (cmp_header(line, "Content-Transfer-Encoding")) {
len = strlen("Content-Transfer-Encoding: ");
- strbuf_add(&sb, line->buf + len, line->len - len);
+ strbuf_addstr(&sb, line->buf + len);
decode_header(mi, &sb);
handle_content_transfer_encoding(mi, &sb);
ret = 1;
@@ -584,7 +584,7 @@ static int check_header(struct mailinfo *mi,
}
if (cmp_header(line, "Message-Id")) {
len = strlen("Message-Id: ");
- strbuf_add(&sb, line->buf + len, line->len - len);
+ strbuf_addstr(&sb, line->buf + len);
decode_header(mi, &sb);
if (mi->add_message_id)
mi->message_id = strbuf_detach(&sb, NULL);