diff --git a/webmin/gnupg-lib.pl b/webmin/gnupg-lib.pl index d46336bd9..56ff07a08 100755 --- a/webmin/gnupg-lib.pl +++ b/webmin/gnupg-lib.pl @@ -100,7 +100,7 @@ local $_; &clean_language(); open(GPG, "$gpgpath --fingerprint ".quotemeta($_[0]->{'name'}->[0])." 2>/dev/null |"); while() { - if (/fingerprint\s+=\s+(.*)/) { + if (/([0-9A-F]{4}\s+[0-9A-F]{4}\s+[0-9A-F]{4}\s+[0-9A-F]{4}\s+[0-9A-F]{4}\s+[0-9A-F]{4}\s+[0-9A-F]{4}\s+[0-9A-F]{4}\s+[0-9A-F]{4}\s+[0-9A-F]{4})/i) { $fp = $1; } } diff --git a/webmin/webmin-lib.pl b/webmin/webmin-lib.pl index fdecd81de..a99564e74 100755 --- a/webmin/webmin-lib.pl +++ b/webmin/webmin-lib.pl @@ -664,14 +664,12 @@ foreach my $k (@keys) { return (0); } # Key been imported before but contact changed, delete first - elsif ($k->{'email'}->[0] ne $email) { - my $key = $finger; - $key =~ s/\s+//g; - if ($k->{'key'} eq $key) { - my $out = &backquote_logged("$gpgpath --batch --delete-key $k->{'key'} 2>&1"); - if ($?) { - return (2, $out); - } + elsif ($k->{'email'}->[0] ne $email && $fp && $fp eq $finger) { + my $finger_ = $finger; + $finger_ =~ s/\s+//g; + my $out = &backquote_logged("$gpgpath --batch --delete-key $finger_ 2>&1"); + if ($?) { + return (2, $out); } } }