@matheusbsbs / matheus-bagliano / commits / 59a8630338
Fork 0

send-email: Don't use FQDNs without a '.'

Although Net::Domain::domainname attempts to be very thorough, the host's configuration can still refuse to give a FQDN. Check to see if what we receive contains a dot as a basic sanity check. Since the same condition is used twice and getting complex, let's move it to a new function. Signed-off-by: Brian Gernhardt <brian@gernhardtsoftware.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Brian Gernhardt committed Apr 10, 2010 at 10:53 UTC 59a8630338ea0173b9777eb9b3e3c9185643efb1
1 file changed +7 -4
git-send-email.perl
+7 -4
@@ -852,13 +852,17 @@ sub sanitize_address {
852 # This maildomain*() code is based on ideas in Perl library Test::Reporter
853 # /usr/share/perl5/Test/Reporter/Mail/Util.pm ==> sub _maildomain ()
854
855 +sub valid_fqdn {
856 + my $domain = shift;
857 + return !($^O eq 'darwin' && $domain =~ /\.local$/) && $domain =~ /\./;
858 +}
859 +
860 sub maildomain_net {
861 my $maildomain;
862
863 if (eval { require Net::Domain; 1 }) {
864 my $domain = Net::Domain::domainname();
860 - $maildomain = $domain
861 - unless $^O eq 'darwin' && $domain =~ /\.local$/;
865 + $maildomain = $domain if valid_fqdn($domain);
866 }
867
868 return $maildomain;
@@ -874,8 +878,7 @@ sub maildomain_mta {
878 my $domain = $smtp->domain;
879 $smtp->quit;
880
877 - $maildomain = $domain
878 - unless $^O eq 'darwin' && $domain =~ /\.local$/;
881 + $maildomain = $domain if valid_fqdn($domain);
882
883 last if $maildomain;
884 }