diff options
author | Guilhem Moulin <guilhem@fripost.org> | 2019-11-06 03:21:59 +0100 |
---|---|---|
committer | Guilhem Moulin <guilhem@fripost.org> | 2019-11-06 03:22:02 +0100 |
commit | 1dea617bfa23f09f94270125ff51c0b2b96e39c8 (patch) | |
tree | 4c1cc072dfce894aa369d38d7c8c16b7c1ebfc45 | |
parent | 2f8350700091e766bdab24e7e8d8e051701da9e2 (diff) |
Allow lowercase SASL mechanisms.
RFC 2222 sec. 3 says that values are “from 1 to 20 characters in length,
consisting of upper-case letters, digits, hyphens, and/or underscores”
so we always upper-case the value.
-rw-r--r-- | lib/Net/IMAP/InterIMAP.pm | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/Net/IMAP/InterIMAP.pm b/lib/Net/IMAP/InterIMAP.pm index 76135ea..afb5694 100644 --- a/lib/Net/IMAP/InterIMAP.pm +++ b/lib/Net/IMAP/InterIMAP.pm @@ -407,8 +407,8 @@ sub new($%) { @caps = $self->capabilities(); } - my @mechs = ('LOGIN', grep defined, map { /^AUTH=(.+)/i ? $1 : undef } @caps); - my $mech = (grep defined, map {my $m = $_; (grep {$m eq $_} @mechs) ? $m : undef} + my @mechs = ('LOGIN', grep defined, map { /^AUTH=(.+)/i ? uc($1) : undef } @caps); + my $mech = (grep defined, map {my $m = uc($_); (grep {$m eq $_} @mechs) ? $m : undef} split(/ /, $self->{auth}))[0]; $self->fail("Failed to choose an authentication mechanism") unless defined $mech; $self->fail("Logins are disabled.") if ($mech eq 'LOGIN' or $mech eq 'PLAIN') and |