git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Michael Strawbridge <michael.strawbridge@amd.com>
To: Bagas Sanjaya <bagasdotme@gmail.com>, Jeff King <peff@peff.net>,
	Todd Zullinger <tmz@pobox.com>
Cc: "Junio C Hamano" <gitster@pobox.com>,
	"Luben Tuikov" <luben.tuikov@amd.com>,
	"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
	"Taylor Blau" <me@ttaylorr.com>,
	"Git Mailing List" <git@vger.kernel.org>
Subject: Re: [REGRESSION] uninitialized value $address in git send-email when given multiple recipients separated by commas
Date: Wed, 11 Oct 2023 15:27:51 -0400	[thread overview]
Message-ID: <95b9e5d5-ab07-48a6-b972-af5348f653be@amd.com> (raw)
In-Reply-To: <ZSal-mQIZAUBaq6g@debian.me>


On 10/11/23 09:41, Bagas Sanjaya wrote:
> On Mon, Sep 25, 2023 at 12:17:48PM -0400, Jeff King wrote:
>> On Mon, Sep 25, 2023 at 10:48:29AM -0400, Todd Zullinger wrote:
>>
>>> From the peanut gallery... could the presence or lack of the
>>> Email::Valid perl module be a factor?
>> Ah, thanks! The thought of differing modules even occurred to me, since
>> I know we have a few optimistic dependencies, but when I looked I didn't
>> manage to find that one (somehow I thought Mail::Address was the
>> interesting one here; I think I might be getting senile).
>>
>> With Email::Valid installed, I can reproduce with just (in git.git, but
>> I think it would work in any repo):
>>
>>   $ echo "exit 0" >.git/hooks/sendemail-validate
>>   $ chmod +x .git/hooks/sendemail-validate
>>   $ git send-email --dry-run -1 --to=foo@example.com,bar@example.com
>>   error: unable to extract a valid address from: foo@example.com,bar@example.com
>>
>> Disabling the hook with "chmod -x" makes the problem go away (and this
>> is with current "master", hence the more readable error message).
>>
>> I think the issue is that a8022c5f7b ends up in extract_valid_address()
>> via this call stack:
>>
>>   $ = main::extract_valid_address('foo@example.com,bar@example.com') called from file '/home/peff/compile/git/git-send-email' line 1161
>>   $ = main::extract_valid_address_or_die('foo@example.com,bar@example.com') called from file '/home/peff/compile/git/git-send-email' line 2087
>>   @ = main::unique_email_list('foo@example.com,bar@example.com') called from file '/home/peff/compile/git/git-send-email' line 1507
>>   @ = main::gen_header() called from file '/home/peff/compile/git/git-send-email' line 2113
>>   . = main::validate_patch('/tmp/WfoPQSKCUa/0001-The-twelfth-batch.patch', 'auto') called from file '/home/peff/compile/git/git-send-email' line 815
>>
>> whereas prior to that commit, we hit it later:
>>
>>   $ = main::extract_valid_address('foo@example.com') called from file '/home/peff/compile/git/git-send-email' line 1166
>>   @ = main::validate_address('foo@example.com') called from file '/home/peff/compile/git/git-send-email' line 1189
>>   @ = main::validate_address_list('foo@example.com', 'bar@example.com') called from file '/home/peff/compile/git/git-send-email' line 1348
>>   @ = main::process_address_list('foo@example.com,bar@example.com') called from file '/home/peff/compile/git/git-send-email' line 1091
>>
>> So the issue is the call to gen_header() added in validate_patch(). We
>> won't yet have processed the address lists by that point. We can move
>> those calls up, but it requires moving a bit of extra code, too (like
>> the parts prompting for the "to" list if it isn't filled in).
>>
>> Possibly the validation checks need to be moved down, if they want to
>> see a more complete view of the emails. But now we're doing more work
>> (like asking the user to write the cover letter!) before we do
>> validation, which is probably bad.
>>
>> So I dunno. Maybe gen_header() should be lazily doing this
>> process_address_list() stuff? I'm not very familiar with the send-email
>> code, so I'm not sure what secondary effects that could have.
>>
> Michael, did you look into this since you authored the culprit?
>
I tried to repro the issue previously but didn't have luck (even with Email::Valid installed). I decided to try again today and realised I forgot to make the test sendemail-validate hook executable before.  Now that I can repro it, I can look further.

The fix may not be easy for the reasons that Jeff King states.  There is a lot of implicit order in the code because there are several places where code exists outside of any function, which has function definitions scattered through it.  My change attempted to clean a portion of that up and encapsulated it into a reusable function for generating header information so that sendemail-validate could see it.  I'll keep digging into it.


  reply	other threads:[~2023-10-11 19:28 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-22  9:27 [REGRESSION] uninitialized value $address in git send-email when given multiple recipients separated by commas Bagas Sanjaya
2023-09-24  3:36 ` Jeff King
2023-09-25  7:45   ` Bagas Sanjaya
2023-09-25  8:00     ` Jeff King
2023-09-25 14:48       ` Todd Zullinger
2023-09-25 16:17         ` Jeff King
2023-10-11 13:41           ` Bagas Sanjaya
2023-10-11 19:27             ` Michael Strawbridge [this message]
2023-10-11 20:22               ` [PATCH] send-email: move process_address_list earlier to avoid, uninitialized address error Michael Strawbridge
2023-10-11 20:25                 ` Michael Strawbridge
2023-10-11 21:27                 ` Junio C Hamano
2023-10-11 22:18                   ` Jeff King
2023-10-11 22:37                     ` Junio C Hamano
2023-10-11 22:47                       ` Jeff King
2023-10-13 20:25                         ` Michael Strawbridge
2023-10-20  6:45                           ` Jeff King
2023-10-20  7:14                             ` Jeff King
2023-10-20 10:03                               ` [PATCH 0/3] some send-email --compose fixes Jeff King
2023-10-20 10:09                                 ` [PATCH 1/3] doc/send-email: mention handling of "reply-to" with --compose Jeff King
2023-10-20 10:13                                 ` [PATCH 2/3] Revert "send-email: extract email-parsing code into a subroutine" Jeff King
2023-10-20 10:45                                   ` Oswald Buddenhagen
2023-10-23 18:40                                     ` Jeff King
2023-10-23 19:50                                       ` Oswald Buddenhagen
2023-10-25  6:11                                         ` Jeff King
2023-10-25  9:23                                           ` Oswald Buddenhagen
2023-10-27 22:31                                             ` Junio C Hamano
2023-10-30  9:13                                             ` Jeff King
2023-10-20 21:45                                   ` Junio C Hamano
2023-10-23 18:47                                     ` Jeff King
2023-10-20 10:15                                 ` [PATCH 3/3] send-email: handle to/cc/bcc from --compose message Jeff King
2023-10-20 17:30                                   ` Eric Sunshine
2023-10-20 21:42                                 ` [PATCH 0/3] some send-email --compose fixes Junio C Hamano
2023-10-23 18:51                                   ` Jeff King
2023-10-24 20:12                                     ` Michael Strawbridge
2023-10-24 20:19                                       ` [PATCH] send-email: move validation code below process_address_list Michael Strawbridge
2023-10-24 21:55                                         ` Junio C Hamano
2023-10-24 22:03                                           ` Junio C Hamano
2023-10-25 18:48                                             ` Michael Strawbridge
2023-10-25 18:51                                             ` [PATCH v2] " Michael Strawbridge
2023-10-26 12:44                                               ` Junio C Hamano
2023-10-26 13:11                                                 ` Michael Strawbridge
2023-10-25  6:50                                         ` [PATCH] " Jeff King
2023-10-25 18:47                                           ` Michael Strawbridge
2023-10-25  7:43                                         ` Uwe Kleine-König
2023-10-27 13:04                                           ` Junio C Hamano
2023-10-20  2:50                 ` [PATCH] send-email: move process_address_list earlier to avoid, uninitialized address error Bagas Sanjaya
2023-09-26 11:33       ` [REGRESSION] uninitialized value $address in git send-email when given multiple recipients separated by commas Bagas Sanjaya

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=95b9e5d5-ab07-48a6-b972-af5348f653be@amd.com \
    --to=michael.strawbridge@amd.com \
    --cc=avarab@gmail.com \
    --cc=bagasdotme@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=luben.tuikov@amd.com \
    --cc=me@ttaylorr.com \
    --cc=peff@peff.net \
    --cc=tmz@pobox.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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).