send-email: sanitize author when writing From line
authorMichael S. Tsirkin <mst@redhat.com>
Tue, 18 Jun 2013 12:49:26 +0000 (15:49 +0300)
committerJunio C Hamano <gitster@pobox.com>
Thu, 20 Jun 2013 18:27:03 +0000 (11:27 -0700)
sender is now sanitized, but we didn't sanitize author when checking
whether From: line is needed in the message body.

As a result git started writing duplicate From: lines when author
matched sender and has utf8 characters.

Reported-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-send-email.perl
t/t9001-send-email.sh
index 7d886958ae04a617ecb9dea7628057638dcbfc9b..548c75d69aa9214e336c9a916a810c46a6a1f678 100755 (executable)
@@ -1258,6 +1258,7 @@ sub send_message {
        open my $fh, "<", $t or die "can't open file $t";
 
        my $author = undef;
+       my $sauthor = undef;
        my $author_encoding;
        my $has_content_type;
        my $body_encoding;
@@ -1296,7 +1297,7 @@ sub send_message {
                        }
                        elsif (/^From:\s+(.*)$/i) {
                                ($author, $author_encoding) = unquote_rfc2047($1);
-                               my $sauthor = sanitize_address($author);
+                               $sauthor = sanitize_address($author);
                                next if $suppress_cc{'author'};
                                next if $suppress_cc{'self'} and $sauthor eq $sender;
                                printf("(mbox) Adding cc: %s from line '%s'\n",
@@ -1392,7 +1393,7 @@ sub send_message {
                $subject = quote_subject($subject, $auto_8bit_encoding);
        }
 
-       if (defined $author and $author ne $sender) {
+       if (defined $sauthor and $sauthor ne $sender) {
                $message = "From: $author\n\n$message";
                if (defined $author_encoding) {
                        if ($has_content_type) {
index 2a6f444bf83dcd3d4ddfb324836e2217da2c1ff1..d6f0271866173be0fdaf6d1308b1027e882f9b30 100755 (executable)
@@ -956,7 +956,7 @@ test_expect_success $PREREQ 'utf8 author is correctly passed on' '
        grep "^From: Füñný Nâmé <odd_?=mail@example.com>" msgtxt1
 '
 
-test_expect_failure $PREREQ 'utf8 sender is not duplicated' '
+test_expect_success $PREREQ 'utf8 sender is not duplicated' '
        clean_fake_sendmail &&
        test_commit weird_sender &&
        test_when_finished "git reset --hard HEAD^" &&