aboutsummaryrefslogtreecommitdiffstats
path: root/g10
diff options
context:
space:
mode:
Diffstat (limited to 'g10')
-rw-r--r--g10/ChangeLog6
-rw-r--r--g10/getkey.c11
2 files changed, 16 insertions, 1 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index 03a52b153..af3e65bf7 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -1,3 +1,9 @@
+2001-06-15 Werner Koch <[email protected]>
+
+ * getkey.c (merge_selfsigs): Exit gracefully when a secret key is
+ encountered. May happen if a secret key is in public keyring.
+ Reported by Francesco Potorti.
+
2001-06-12 Werner Koch <[email protected]>
* getkey.c (compare_name): Use ascii_memistr(), ascii_memcasecmp()
diff --git a/g10/getkey.c b/g10/getkey.c
index bd21f956f..96ab714b5 100644
--- a/g10/getkey.c
+++ b/g10/getkey.c
@@ -1807,8 +1807,17 @@ merge_selfsigs( KBNODE keyblock )
int revoked;
PKT_public_key *main_pk;
- if ( keyblock->pkt->pkttype != PKT_PUBLIC_KEY )
+ if ( keyblock->pkt->pkttype != PKT_PUBLIC_KEY ) {
+ if (keyblock->pkt->pkttype == PKT_SECRET_KEY ) {
+ log_error ("expected public key but found secret key "
+ "- must stop\n");
+ /* we better exit here becuase a public key is expected at
+ other places too. FIXME: Figure this out earlier and
+ don't get to here at all */
+ g10_exit (1);
+ }
BUG ();
+ }
merge_selfsigs_main ( keyblock, &revoked );
main_pk = keyblock->pkt->pkt.public_key;