Skip to content

Commit e9fe804

Browse files
Lukas Sandströmgitster
authored andcommitted
git-mailinfo: Fix getting the subject from the in-body [PATCH] line
"Subject: " isn't in the static array "header", and thus memcmp("Subject:", header[i], 7) will never match. Even if it did so, hdr_data[] may not have been allocated if there weren't a "Subject: " in-body when we process "[PATCH]" in the affected codepath. Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent b495818 commit e9fe804

File tree

7 files changed

+104
-2
lines changed

7 files changed

+104
-2
lines changed

builtin-mailinfo.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,9 @@ static int check_header(char *line, unsigned linesize, char **hdr_data, int over
334334
return 1;
335335
if (!memcmp("[PATCH]", line, 7) && isspace(line[7])) {
336336
for (i = 0; header[i]; i++) {
337-
if (!memcmp("Subject: ", header[i], 9)) {
337+
if (!memcmp("Subject", header[i], 7)) {
338+
if (!hdr_data[i])
339+
hdr_data[i] = xmalloc(linesize + 20);
338340
if (! handle_header(line, hdr_data[i], 0)) {
339341
return 1;
340342
}

t/t5100-mailinfo.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ test_expect_success 'split sample box' \
1111
'git mailsplit -o. ../t5100/sample.mbox >last &&
1212
last=`cat last` &&
1313
echo total is $last &&
14-
test `cat last` = 9'
14+
test `cat last` = 10'
1515

1616
for mail in `echo 00*`
1717
do

t/t5100/0010

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
From b9704a518e21158433baa2cc2d591fea687967f6 Mon Sep 17 00:00:00 2001
2+
From: =?UTF-8?q?Lukas=20Sandstr=C3=B6m?= <lukass@etek.chalmers.se>
3+
Date: Thu, 10 Jul 2008 23:41:33 +0200
4+
Subject: Re: discussion that lead to this patch
5+
MIME-Version: 1.0
6+
Content-Type: text/plain; charset=UTF-8
7+
Content-Transfer-Encoding: 8bit
8+
9+
[PATCH] git-mailinfo: Fix getting the subject from the body
10+
11+
"Subject: " isn't in the static array "header", and thus
12+
memcmp("Subject: ", header[i], 7) will never match.
13+
14+
Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
15+
Signed-off-by: Junio C Hamano <gitster@pobox.com>
16+
---
17+
builtin-mailinfo.c | 2 +-
18+
1 files changed, 1 insertions(+), 1 deletions(-)
19+
20+
diff --git a/builtin-mailinfo.c b/builtin-mailinfo.c
21+
index 962aa34..2d1520f 100644
22+
--- a/builtin-mailinfo.c
23+
+++ b/builtin-mailinfo.c
24+
@@ -334,7 +334,7 @@ static int check_header(char *line, unsigned linesize, char **hdr_data, int over
25+
return 1;
26+
if (!memcmp("[PATCH]", line, 7) && isspace(line[7])) {
27+
for (i = 0; header[i]; i++) {
28+
- if (!memcmp("Subject: ", header[i], 9)) {
29+
+ if (!memcmp("Subject", header[i], 7)) {
30+
if (! handle_header(line, hdr_data[i], 0)) {
31+
return 1;
32+
}
33+
--
34+
1.5.6.2.455.g1efb2
35+

t/t5100/info0010

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
Author: Lukas Sandström
2+
Email: lukass@etek.chalmers.se
3+
Subject: git-mailinfo: Fix getting the subject from the body
4+
Date: Thu, 10 Jul 2008 23:41:33 +0200
5+

t/t5100/msg0010

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
"Subject: " isn't in the static array "header", and thus
2+
memcmp("Subject: ", header[i], 7) will never match.
3+
4+
Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
5+
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t/t5100/patch0010

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
builtin-mailinfo.c | 2 +-
3+
1 files changed, 1 insertions(+), 1 deletions(-)
4+
5+
diff --git a/builtin-mailinfo.c b/builtin-mailinfo.c
6+
index 962aa34..2d1520f 100644
7+
--- a/builtin-mailinfo.c
8+
+++ b/builtin-mailinfo.c
9+
@@ -334,7 +334,7 @@ static int check_header(char *line, unsigned linesize, char **hdr_data, int over
10+
return 1;
11+
if (!memcmp("[PATCH]", line, 7) && isspace(line[7])) {
12+
for (i = 0; header[i]; i++) {
13+
- if (!memcmp("Subject: ", header[i], 9)) {
14+
+ if (!memcmp("Subject", header[i], 7)) {
15+
if (! handle_header(line, hdr_data[i], 0)) {
16+
return 1;
17+
}
18+
--
19+
1.5.6.2.455.g1efb2
20+

t/t5100/sample.mbox

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,3 +430,38 @@ index b426a14..97756ec 100644
430430
=20
431431
=20
432432
2. When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
433+
From b9704a518e21158433baa2cc2d591fea687967f6 Mon Sep 17 00:00:00 2001
434+
From: =?UTF-8?q?Lukas=20Sandstr=C3=B6m?= <lukass@etek.chalmers.se>
435+
Date: Thu, 10 Jul 2008 23:41:33 +0200
436+
Subject: Re: discussion that lead to this patch
437+
MIME-Version: 1.0
438+
Content-Type: text/plain; charset=UTF-8
439+
Content-Transfer-Encoding: 8bit
440+
441+
[PATCH] git-mailinfo: Fix getting the subject from the body
442+
443+
"Subject: " isn't in the static array "header", and thus
444+
memcmp("Subject: ", header[i], 7) will never match.
445+
446+
Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
447+
Signed-off-by: Junio C Hamano <gitster@pobox.com>
448+
---
449+
builtin-mailinfo.c | 2 +-
450+
1 files changed, 1 insertions(+), 1 deletions(-)
451+
452+
diff --git a/builtin-mailinfo.c b/builtin-mailinfo.c
453+
index 962aa34..2d1520f 100644
454+
--- a/builtin-mailinfo.c
455+
+++ b/builtin-mailinfo.c
456+
@@ -334,7 +334,7 @@ static int check_header(char *line, unsigned linesize, char **hdr_data, int over
457+
return 1;
458+
if (!memcmp("[PATCH]", line, 7) && isspace(line[7])) {
459+
for (i = 0; header[i]; i++) {
460+
- if (!memcmp("Subject: ", header[i], 9)) {
461+
+ if (!memcmp("Subject", header[i], 7)) {
462+
if (! handle_header(line, hdr_data[i], 0)) {
463+
return 1;
464+
}
465+
--
466+
1.5.6.2.455.g1efb2
467+

0 commit comments

Comments
 (0)