Re: [PATCH] git-send-email: fix handling of special characters
- From
Junio C Hamano <gitster@pobox.com>
- Date
- May 23, 2013, 19:52 UTC
- Message-ID
- <7vk3mpeaok.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <20130523135418.GA20741@redhat.com>
"Michael S. Tsirkin" <mst@redhat.com> writes:
Show 35 quoted lines
> When patch sender's name has special characters,
> git send-email did not quote it before matching
> against the author name.
> As a result it would produce mail like this:
>
> Date: Thu, 23 May 2013 16:36:00 +0300
> From: "Michael S. Tsirkin" <mst@redhat.com>
> To: qemu-devel@nongnu.org
> Cc: "Michael S. Tsirkin" <mst@redhat.com>
> Subject: [PATCH 0/9] virtio: switch to linux headers
> Message-Id: <1369316169-20181-1-git-send-email-mst@redhat.com>
>
> From: "Michael S. Tsirkin" <mst@redhat.com>
>
> Fix by sanitizing before matching to patch author name.
>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
> git-send-email.perl | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/git-send-email.perl b/git-send-email.perl
> index bd13cc8..c4dc438 100755
> --- a/git-send-email.perl
> +++ b/git-send-email.perl
> @@ -1400,7 +1400,8 @@ foreach my $t (@files) {
> $subject = quote_subject($subject, $auto_8bit_encoding);
> }
>
> - if (defined $author and $author ne $sender) {
> + my $sanitized_sender = sanitize_address($sender);
> + if (defined $author and $author ne $sanitized_sender) {
> $message = "From: $author\n\n$message";
> if (defined $author_encoding) {
> if ($has_content_type) {Is $author already sanitized at this point in the code? I see it was unwrapped with unquote_rfc2047 after it was read from the From: line; will it always be the same as sanitize_address($author) would return, and if not, would you rather compare between sanitized versions of sender and author, no?
Also, isn't the $sender the same during the whole outer loop that iterates over @files? Do we need to apply sanitize_address() on it over and over for each and every logical line in the @header?
This comment also applies to the other patch but they probably should become a single patch anyway, I guess?