summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mailinfo.c5
-rwxr-xr-xt/t4254-am-corrupt.sh7
2 files changed, 10 insertions, 2 deletions
diff --git a/mailinfo.c b/mailinfo.c
index 0e9911df6d..5681d9130d 100644
--- a/mailinfo.c
+++ b/mailinfo.c
@@ -1138,6 +1138,11 @@ static void handle_info(struct mailinfo *mi)
else
continue;
+ if (memchr(hdr->buf, '\0', hdr->len)) {
+ error("a NUL byte in '%s' is not allowed.", header[i]);
+ mi->input_error = -1;
+ }
+
if (!strcmp(header[i], "Subject")) {
if (!mi->keep_subject) {
cleanup_subject(mi, hdr);
diff --git a/t/t4254-am-corrupt.sh b/t/t4254-am-corrupt.sh
index 1bbc37bc92..daf01c309d 100755
--- a/t/t4254-am-corrupt.sh
+++ b/t/t4254-am-corrupt.sh
@@ -70,10 +70,13 @@ test_expect_success "NUL in commit message's body" '
grep "a NUL byte in commit log message not allowed" err
'
-test_expect_failure "NUL in commit message's header" "
+test_expect_success "NUL in commit message's header" "
test_when_finished 'git am --abort' &&
make_mbox_with_nul subject >subject.patch &&
- test_must_fail git am subject.patch
+ test_must_fail git mailinfo msg patch <subject.patch 2>err &&
+ grep \"a NUL byte in 'Subject' is not allowed\" err &&
+ test_must_fail git am subject.patch 2>err &&
+ grep \"a NUL byte in 'Subject' is not allowed\" err
"
test_done