From: Jeff King <peff@peff.net>
To: Stefan Beller <sbeller@google.com>
Cc: "git@vger.kernel.org" <git@vger.kernel.org>
Subject: Re: One whitespace breaks sending mail (using mailrc aliases wit send-emal)
Date: Wed, 16 Mar 2016 22:00:15 -0400 [thread overview]
Message-ID: <20160317020015.GC12830@sigill.intra.peff.net> (raw)
In-Reply-To: <CAGZ79kbRdPMkbs_-BGhCQ44hOsccG3aX16RJpE3ZHcBmDz40zQ@mail.gmail.com>
On Wed, Mar 16, 2016 at 06:28:59PM -0700, Stefan Beller wrote:
> To reproduce:
>
> $ git config sendemail.aliasesfile ~/.mailrc
> $ git config sendemail.aliasfiletype mailrc
> $ echo "alias zzz_wrong_entry jon@do.e "
> # notice the white space at the end of the alias
>
> $ git send-email 0001-rebase-x-do-not-die-without-i.patch --cc=zzz_wrong_entry
> Use of uninitialized value $alias in hash element at
> /usr/local/google/home/sbeller/libexec/git-core/git-send-email line
> 847.
> [...]
> The stack trace doesn't even show the wrong address, so debugging that was hard.
> Not sure I am asking for help, as I found the problem and could fix
> it, but maybe we can
> improve the error message (I have no knowledge about perl, so I may
> not be super helpful there)
I don't think so. The problem is that we return `undef` for one of the
aliases, and then later when we look at that, perl obviously is unhappy.
It's sort of the equivalent of a C program dereferencing NULL, but the
bug is assigning NULL in the first place much earlier.
You _can_ tell perl not to bother warning about accessing undef like
this, but it's usually a good idea to have such warnings on, as they are
helpful for finding real bugs.
I imagine your problem is by:
diff --git a/git-send-email.perl b/git-send-email.perl
index d356901..c45b22a 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -533,7 +533,7 @@ my %parse_alias = (
$aliases{$alias} = \@addr
}}},
mailrc => sub { my $fh = shift; while (<$fh>) {
- if (/^alias\s+(\S+)\s+(.*)$/) {
+ if (/^alias\s+(\S+)\s+(.*?)\s*$/) {
# spaces delimit multiple addresses
$aliases{$1} = [ quotewords('\s+', 0, $2) ];
}}},
to suppress the extra whitespace at the end (alternatively, there may be
a way to tell quotewords() to throw out a trailing delimiter, but I
don't know the Text::ParseWords module well enough to say offhand).
-Peff
next prev parent reply other threads:[~2016-03-17 2:00 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-17 1:28 One whitespace breaks sending mail (using mailrc aliases wit send-emal) Stefan Beller
2016-03-17 2:00 ` Jeff King [this message]
2016-03-17 17:47 ` [PATCH] That works Stefan Beller
2016-03-17 18:00 ` Jeff King
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160317020015.GC12830@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
--cc=sbeller@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).