Subject: Re: [PATCH] send-email: don't call methods on undefined values

From: Junio C Hamano <[email-masked]>
Date: Mon, 09 Sep 2013 09:45:10 -0700

"brian m. carlson" <[email-masked]> writes:

> If SSL verification is enabled in git send-email, we could attempt to call a
> method on an undefined value if the verification failed, since $smtp would end
> up being undef.  Look up the error string in a way that will produce a helpful
> error message and not cause further errors.
>
> Signed-off-by: brian m. carlson <[email-masked]>
> ---
>  git-send-email.perl | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/git-send-email.perl b/git-send-email.perl
> index 2162478..3782c3b 100755
> --- a/git-send-email.perl
> +++ b/git-send-email.perl
> @@ -1234,7 +1234,7 @@ X-Mailer: git-send-email $gitversion
>  				if ($smtp->code == 220) {
>  					$smtp = Net::SMTP::SSL->start_SSL($smtp,
>  									  ssl_verify_params())
> -						or die "STARTTLS failed! ".$smtp->message;
> +						or die "STARTTLS failed! ".IO::Socket::SSL::errstr();

I agree that $smtp->message may be bogus at this point, but could
"require IO::Socket::SSL" have failed on us in ssl_verify_params?
In that degraded mode, we do not do SSL peer verification, but
otherwise we would still attempt to talk with the peer, and in such
a case, IO::Socket::SSL would not be available to us at this point,
no?

>  					$smtp_encryption = '';
>  					# Send EHLO again to receive fresh
>  					# supported commands