Module Name:    src
Committed By:   agc
Date:           Sat Aug 21 19:00:43 UTC 2010

Modified Files:
        src/crypto/external/bsd/netpgp/dist/src/lib: keyring.c

Log Message:
avoid false positives when matching a (non-existent) encryption subkey

use debugging output to point to the matching key


To generate a diff of this commit:
cvs rdiff -u -r1.43 -r1.44 \
    src/crypto/external/bsd/netpgp/dist/src/lib/keyring.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/crypto/external/bsd/netpgp/dist/src/lib/keyring.c
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/keyring.c:1.43 src/crypto/external/bsd/netpgp/dist/src/lib/keyring.c:1.44
--- src/crypto/external/bsd/netpgp/dist/src/lib/keyring.c:1.43	Sun Aug 15 16:10:56 2010
+++ src/crypto/external/bsd/netpgp/dist/src/lib/keyring.c	Sat Aug 21 19:00:43 2010
@@ -57,7 +57,7 @@
 
 #if defined(__NetBSD__)
 __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: keyring.c,v 1.43 2010/08/15 16:10:56 agc Exp $");
+__RCSID("$NetBSD: keyring.c,v 1.44 2010/08/21 19:00:43 agc Exp $");
 #endif
 
 #ifdef HAVE_FCNTL_H
@@ -834,6 +834,9 @@
 			}
 			return &keyring->keys[*from];
 		}
+		if (memcmp(&keyring->keys[*from].encid, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", OPS_KEY_ID_SIZE) == 0) {
+			continue;
+		}
 		if (memcmp(&keyring->keys[*from].encid, keyid, OPS_KEY_ID_SIZE) == 0 ||
 		    memcmp(&keyring->keys[*from].encid[OPS_KEY_ID_SIZE / 2], keyid, OPS_KEY_ID_SIZE / 2) == 0) {
 			if (pubkey) {
@@ -924,12 +927,12 @@
 	for (keyp = &keyring->keys[*from]; *from < keyring->keyc; *from += 1, keyp++) {
 		uidp = keyp->uids;
 		for (i = 0 ; i < keyp->uidc; i++, uidp++) {
-			if (__ops_get_debug_level(__FILE__)) {
-				(void) fprintf(io->outs,
-					"keyid \"%s\" len %" PRIsize "u\n",
-				       (char *) *uidp, len);
-			}
 			if (regexec(&r, (char *)*uidp, 0, NULL, 0) == 0) {
+				if (__ops_get_debug_level(__FILE__)) {
+					(void) fprintf(io->outs,
+						"MATCHED keyid \"%s\" len %" PRIsize "u\n",
+					       (char *) *uidp, len);
+				}
 				regfree(&r);
 				return keyp;
 			}

Reply via email to