Whine about malformed input
[pgp-tools.git] / gpgsigs / gpgsigs
index c49ef00bfda9b4548eb14356e7fbffb77f823347..35d6d71f2c5348b7e9406faa713b1c0e1cf6667b 100755 (executable)
@@ -202,13 +202,15 @@ while (<SIGS>) {
                if (defined $before) {
                        if ($before eq 'S' || $before eq 's') {
                                $sigs->{$key}->{$uid}->{$1.$2} = $class;
+                       } elsif ($class eq 'S' || $class eq 's') {
+                               # intentionall left blank
                        } elsif ($before < $class) {
                                $sigs->{$key}->{$uid}->{$1.$2} = $class;
                        };
                } else {
                        $sigs->{$key}->{$uid}->{$1.$2} .= $class;
                };
-               $sigs->{$key}->{$uid}->{$2} = $sigs->{$key}->{$uid}->{$1.$2}
+               $sigs->{$key}->{$uid}->{$2} = $sigs->{$key}->{$uid}->{$1.$2};
                next;
        }
        if ( m/^uat:/ ) {
@@ -259,10 +261,14 @@ sub print_tag
        return $r;
 }
 
+$key = undef;
+$uid = undef;
+my $line = 0;
 print STDERR "Annotating $keytxt, writing into $outfile\n";
 open (TXT, $keytxt) or die ("Cannot open $keytxt\n");
 open (WRITE, '>'.$outfile) or die ("Cannot open $outfile for writing\n");
 while (<TXT>) {
+       $line++;
        $_ = myfromrecode($_);
        if (/^MD5 Checksum:/ && defined $MD5) {
                s/[_[:xdigit:]][_ [:xdigit:]]+_/$MD5/;
@@ -280,7 +286,10 @@ while (<TXT>) {
        }
        if ( m/^uid +(.*)$/ ) {
                $uid = $1;
-               die "key is undefined" unless defined $key;
+               unless (defined $key) {
+                       warn "key is undefined - input text is possibly malformed near line $line\n";
+                       next;
+               };
                die "uid is undefined, key $key" unless defined $uid;
                die "bad tag from $key | $uid" unless defined (print_tag($key, $uid));
                print WRITE print_tag($key, $uid) . " $_";