Re: [PATCH] git-send-email.perl: avoid printing undef when validating addresses
- From
Jeff King <peff@peff.net>
- Date
- Sep 18, 2023, 21:20 UTC
- Message-ID
- <20230918212004.GC2163162@coredump.intra.peff.net>
- In-Reply-To
- <545729b619308c6f3397b9aa1747f26ddc58f461.1695054945.git.me@ttaylorr.com>
On Mon, Sep 18, 2023 at 12:35:53PM -0400, Taylor Blau wrote:
Show 16 quoted lines
> When validating email addresses with `extract_valid_address_or_die()`,
> we print out a helpful error message when the given input does not
> contain a valid email address.
>
> However, the pre-image of this patch looks something like:
>
> my $address = shift;
> $address = extract_valid_address($address):
> die sprintf(__("..."), $address) if !$address;
>
> which fails when given a bogus email address by trying to use $address
> (which is undef) in a sprintf() expansion, like so:
>
> $ git.compile send-email --to="pi <pi@pi>" /tmp/x/*.patch --force
> Use of uninitialized value $address in sprintf at /home/ttaylorr/src/git/git-send-email line 1175.
> error: unable to extract a valid address from:Yeah, we overwrite the variable we're reporting on, so I don't think the original could possibly work. Your fix makes sense.
Show 5 quoted lines
> This regression dates back to e431225569 (git-send-email: remove invalid > addresses earlier, 2012-11-22), but became more noticeable in a8022c5f7b > (send-email: expose header information to git-send-email's > sendemail-validate hook, 2023-04-19), which validates SMTP headers in > the sendemail-validate hook.
I didn't quite understand how a8022c5f7b made this worse, but I guess we just call it the bad function in more instances. The bug is definitely from e431225569, though.
-Peff