Module Name: src Committed By: agc Date: Fri May 21 06:53:51 UTC 2010
Modified Files: src/crypto/external/bsd/netpgp/dist/src/lib: netpgp.c Log Message: Protect against NULL pointers in key output in a different way - only advance its counter if it's non-NULL. Regression test for this is: netpgpkeys --list-key '\.de\>' with my standard keyring (to list all keys which have at least one subuid with a German email address). To generate a diff of this commit: cvs rdiff -u -r1.54 -r1.55 \ src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.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/netpgp.c diff -u src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c:1.54 src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c:1.55 --- src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c:1.54 Thu May 20 14:43:42 2010 +++ src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c Fri May 21 06:53:51 2010 @@ -34,7 +34,7 @@ #if defined(__NetBSD__) __COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved."); -__RCSID("$NetBSD: netpgp.c,v 1.54 2010/05/20 14:43:42 agc Exp $"); +__RCSID("$NetBSD: netpgp.c,v 1.55 2010/05/21 06:53:51 agc Exp $"); #endif #include <sys/types.h> @@ -600,7 +600,9 @@ "pub", &key->key.pubkey, psigs); } - pubs.c += 1; + if (pubs.v[pubs.c] != NULL) { + pubs.c += 1; + } k += 1; } } while (key != NULL); @@ -611,10 +613,8 @@ (pubs.c == 1) ? "" : "s"); } for (k = 0 ; k < pubs.c ; k++) { - if (pubs.v[k]) { - (void) fprintf(fp, "%s%s", pubs.v[k], (k < pubs.c - 1) ? "\n" : ""); - free(pubs.v[k]); - } + (void) fprintf(fp, "%s%s", pubs.v[k], (k < pubs.c - 1) ? "\n" : ""); + free(pubs.v[k]); } free(pubs.v); return pubs.c;