Module Name: src
Committed By: agc
Date: Fri Feb 12 03:38:48 UTC 2010
Modified Files:
src/crypto/external/bsd/netpgp/dist: TODO configure.ac
src/crypto/external/bsd/netpgp/dist/src/lib: create.c crypto.c crypto.h
keyring.h netpgp.c packet-print.c reader.c validate.c version.h
src/crypto/external/bsd/netpgp/dist/src/netpgpverify: verify.c
Log Message:
Changes to 1.99.19/20100212
+ plug some memory leaks, from cppcheck via Thomas Klausner (thanks!)
+ make the singular of time units read correctly
+ print decryption key info properly when prompting for passphrase
To generate a diff of this commit:
cvs rdiff -u -r1.30 -r1.31 src/crypto/external/bsd/netpgp/dist/TODO
cvs rdiff -u -r1.23 -r1.24 src/crypto/external/bsd/netpgp/dist/configure.ac
cvs rdiff -u -r1.21 -r1.22 \
src/crypto/external/bsd/netpgp/dist/src/lib/create.c
cvs rdiff -u -r1.19 -r1.20 \
src/crypto/external/bsd/netpgp/dist/src/lib/crypto.c
cvs rdiff -u -r1.15 -r1.16 \
src/crypto/external/bsd/netpgp/dist/src/lib/crypto.h
cvs rdiff -u -r1.20 -r1.21 \
src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h
cvs rdiff -u -r1.38 -r1.39 \
src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c
cvs rdiff -u -r1.25 -r1.26 \
src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c \
src/crypto/external/bsd/netpgp/dist/src/lib/version.h
cvs rdiff -u -r1.29 -r1.30 \
src/crypto/external/bsd/netpgp/dist/src/lib/reader.c
cvs rdiff -u -r1.28 -r1.29 \
src/crypto/external/bsd/netpgp/dist/src/lib/validate.c
cvs rdiff -u -r1.2 -r1.3 \
src/crypto/external/bsd/netpgp/dist/src/netpgpverify/verify.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/TODO
diff -u src/crypto/external/bsd/netpgp/dist/TODO:1.30 src/crypto/external/bsd/netpgp/dist/TODO:1.31
--- src/crypto/external/bsd/netpgp/dist/TODO:1.30 Mon Feb 8 17:19:11 2010
+++ src/crypto/external/bsd/netpgp/dist/TODO Fri Feb 12 03:38:48 2010
@@ -87,3 +87,5 @@
display expiry properly
unarmoured static in packet-print.c and skipping in crypto.c
duration -> expiry
+print signing key info properly when prompting for passphrase
+print decryption key info properly when prompting for passphrase
Index: src/crypto/external/bsd/netpgp/dist/configure.ac
diff -u src/crypto/external/bsd/netpgp/dist/configure.ac:1.23 src/crypto/external/bsd/netpgp/dist/configure.ac:1.24
--- src/crypto/external/bsd/netpgp/dist/configure.ac:1.23 Thu Feb 11 17:46:09 2010
+++ src/crypto/external/bsd/netpgp/dist/configure.ac Fri Feb 12 03:38:48 2010
@@ -1,10 +1,10 @@
-# $NetBSD: configure.ac,v 1.23 2010/02/11 17:46:09 agc Exp $
+# $NetBSD: configure.ac,v 1.24 2010/02/12 03:38:48 agc Exp $
#
# Process this file with autoconf to produce a configure script.
-AC_INIT([netpgp],[20100211],[Alistair Crooks <[email protected]> c0596823])
+AC_INIT([netpgp],[20100212],[Alistair Crooks <[email protected]> c0596823])
AC_PREREQ(2.63)
-AC_REVISION([$Revision: 1.23 $])
+AC_REVISION([$Revision: 1.24 $])
AS_SHELL_SANITIZE
Index: src/crypto/external/bsd/netpgp/dist/src/lib/create.c
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/create.c:1.21 src/crypto/external/bsd/netpgp/dist/src/lib/create.c:1.22
--- src/crypto/external/bsd/netpgp/dist/src/lib/create.c:1.21 Wed Oct 7 16:19:51 2009
+++ src/crypto/external/bsd/netpgp/dist/src/lib/create.c Fri Feb 12 03:38:48 2010
@@ -57,7 +57,7 @@
#if defined(__NetBSD__)
__COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: create.c,v 1.21 2009/10/07 16:19:51 agc Exp $");
+__RCSID("$NetBSD: create.c,v 1.22 2010/02/12 03:38:48 agc Exp $");
#endif
#include <sys/types.h>
@@ -1012,11 +1012,14 @@
if ((sesskey = calloc(1, sizeof(*sesskey))) == NULL) {
(void) fprintf(stderr,
"__ops_create_pk_sesskey: can't allocate\n");
+ free(encoded_m_buf);
return NULL;
}
if (key->type != OPS_PTAG_CT_PUBLIC_KEY) {
(void) fprintf(stderr,
"__ops_create_pk_sesskey: bad type\n");
+ free(encoded_m_buf);
+ free(sesskey);
return NULL;
}
sesskey->version = OPS_PKSK_V3;
@@ -1035,6 +1038,8 @@
if (key->key.pubkey.alg != OPS_PKA_RSA) {
(void) fprintf(stderr,
"__ops_create_pk_sesskey: bad pubkey algorithm\n");
+ free(encoded_m_buf);
+ free(sesskey);
return NULL;
}
sesskey->alg = key->key.pubkey.alg;
@@ -1056,6 +1061,7 @@
}
if (create_unencoded_m_buf(sesskey, &unencoded_m_buf[0]) == 0) {
free(encoded_m_buf);
+ free(sesskey);
return NULL;
}
if (__ops_get_debug_level(__FILE__)) {
@@ -1074,6 +1080,7 @@
if (!__ops_rsa_encrypt_mpi(encoded_m_buf, sz_encoded_m_buf, pubkey,
&sesskey->params)) {
free(encoded_m_buf);
+ free(sesskey);
return NULL;
}
free(encoded_m_buf);
@@ -1226,6 +1233,7 @@
return 0;
}
if (write(fd, buf, len) != (int)len) {
+ (void) close(fd);
return 0;
}
Index: src/crypto/external/bsd/netpgp/dist/src/lib/crypto.c
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/crypto.c:1.19 src/crypto/external/bsd/netpgp/dist/src/lib/crypto.c:1.20
--- src/crypto/external/bsd/netpgp/dist/src/lib/crypto.c:1.19 Mon Feb 8 17:19:12 2010
+++ src/crypto/external/bsd/netpgp/dist/src/lib/crypto.c Fri Feb 12 03:38:48 2010
@@ -54,7 +54,7 @@
#if defined(__NetBSD__)
__COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: crypto.c,v 1.19 2010/02/08 17:19:12 agc Exp $");
+__RCSID("$NetBSD: crypto.c,v 1.20 2010/02/12 03:38:48 agc Exp $");
#endif
#include <sys/types.h>
@@ -381,7 +381,8 @@
__ops_decrypt_file(__ops_io_t *io,
const char *infile,
const char *outfile,
- __ops_keyring_t *keyring,
+ __ops_keyring_t *secring,
+ __ops_keyring_t *pubring,
const unsigned use_armour,
const unsigned allow_overwrite,
void *passfp,
@@ -443,9 +444,10 @@
/* setup for writing decrypted contents to given output file */
/* setup keyring and passphrase callback */
- parse->cbinfo.cryptinfo.keyring = keyring;
+ parse->cbinfo.cryptinfo.secring = secring;
parse->cbinfo.passfp = passfp;
parse->cbinfo.cryptinfo.getpassphrase = getpassfunc;
+ parse->cbinfo.cryptinfo.pubring = pubring;
/* Set up armour/passphrase options */
if (use_armour) {
@@ -475,7 +477,8 @@
__ops_decrypt_buf(__ops_io_t *io,
const void *input,
const size_t insize,
- __ops_keyring_t *keyring,
+ __ops_keyring_t *secring,
+ __ops_keyring_t *pubring,
const unsigned use_armour,
void *passfp,
__ops_cbfunc_t *getpassfunc)
@@ -504,7 +507,8 @@
__ops_setup_memory_write(&parse->cbinfo.output, &outmem, insize);
/* setup keyring and passphrase callback */
- parse->cbinfo.cryptinfo.keyring = keyring;
+ parse->cbinfo.cryptinfo.secring = secring;
+ parse->cbinfo.cryptinfo.pubring = pubring;
parse->cbinfo.passfp = passfp;
parse->cbinfo.cryptinfo.getpassphrase = getpassfunc;
Index: src/crypto/external/bsd/netpgp/dist/src/lib/crypto.h
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/crypto.h:1.15 src/crypto/external/bsd/netpgp/dist/src/lib/crypto.h:1.16
--- src/crypto/external/bsd/netpgp/dist/src/lib/crypto.h:1.15 Mon Feb 8 17:19:12 2010
+++ src/crypto/external/bsd/netpgp/dist/src/lib/crypto.h Fri Feb 12 03:38:48 2010
@@ -187,6 +187,7 @@
const char *,
const char *,
__ops_keyring_t *,
+ __ops_keyring_t *,
const unsigned,
const unsigned,
void *,
@@ -203,6 +204,7 @@
const void *,
const size_t,
__ops_keyring_t *,
+ __ops_keyring_t *,
const unsigned,
void *,
__ops_cbfunc_t *);
@@ -238,9 +240,10 @@
*/
struct __ops_cryptinfo_t {
char *passphrase;
- __ops_keyring_t *keyring;
+ __ops_keyring_t *secring;
const __ops_key_t *keydata;
__ops_cbfunc_t *getpassphrase;
+ __ops_keyring_t *pubring;
};
/** __ops_cbdata_t */
Index: src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h:1.20 src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h:1.21
--- src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h:1.20 Sat Feb 6 02:24:33 2010
+++ src/crypto/external/bsd/netpgp/dist/src/lib/keyring.h Fri Feb 12 03:38:48 2010
@@ -132,6 +132,7 @@
char *,
unsigned,
__ops_keyring_t *,
+ __ops_keyring_t *,
void *,
__ops_cbfunc_t *);
Index: src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c:1.38 src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c:1.39
--- src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c:1.38 Thu Feb 11 17:46:09 2010
+++ src/crypto/external/bsd/netpgp/dist/src/lib/netpgp.c Fri Feb 12 03:38:48 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.38 2010/02/11 17:46:09 agc Exp $");
+__RCSID("$NetBSD: netpgp.c,v 1.39 2010/02/12 03:38:48 agc Exp $");
#endif
#include <sys/types.h>
@@ -415,6 +415,7 @@
} else if ((io->res = fopen(results, "w")) == NULL) {
(void) fprintf(io->errs, "Can't open results %s for writing\n",
results);
+ free(io);
return 0;
}
netpgp->io = io;
@@ -799,6 +800,7 @@
}
(void) fclose(fp);
return __ops_decrypt_file(netpgp->io, f, out, netpgp->secring,
+ netpgp->pubring,
(unsigned)realarmour, overwrite,
netpgp->passfp, get_passphrase_cb);
}
@@ -1107,6 +1109,7 @@
}
realarmour = (strncmp(input, ARMOR_HEAD, sizeof(ARMOR_HEAD) - 1) == 0);
mem = __ops_decrypt_buf(netpgp->io, input, insize, netpgp->secring,
+ netpgp->pubring,
realarmour, netpgp->passfp,
get_passphrase_cb);
m = MIN(__ops_mem_len(mem), outsize);
@@ -1177,7 +1180,9 @@
}
netpgp->pubring = keyring;
netpgp_setvar(netpgp, "pubring", pubringname);
- ret = __ops_list_packets(io, f, (unsigned)armour, keyring,
+ ret = __ops_list_packets(io, f, (unsigned)armour,
+ netpgp->secring,
+ netpgp->pubring,
netpgp->passfp,
get_passphrase_cb);
free(keyring);
Index: src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c:1.25 src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c:1.26
--- src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c:1.25 Mon Feb 8 17:19:12 2010
+++ src/crypto/external/bsd/netpgp/dist/src/lib/packet-print.c Fri Feb 12 03:38:48 2010
@@ -58,7 +58,7 @@
#if defined(__NetBSD__)
__COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: packet-print.c,v 1.25 2010/02/08 17:19:12 agc Exp $");
+__RCSID("$NetBSD: packet-print.c,v 1.26 2010/02/12 03:38:48 agc Exp $");
#endif
#include <string.h>
@@ -1256,7 +1256,8 @@
__ops_list_packets(__ops_io_t *io,
char *filename,
unsigned armour,
- __ops_keyring_t *keyring,
+ __ops_keyring_t *secring,
+ __ops_keyring_t *pubring,
void *passfp,
__ops_cbfunc_t *cb_get_passphrase)
{
@@ -1268,7 +1269,8 @@
fd = __ops_setup_file_read(io, &stream, filename, NULL, cb_list_packets,
accumulate);
__ops_parse_options(stream, OPS_PTAG_SS_ALL, OPS_PARSE_PARSED);
- stream->cryptinfo.keyring = keyring;
+ stream->cryptinfo.secring = secring;
+ stream->cryptinfo.pubring = pubring;
stream->cbinfo.passfp = passfp;
stream->cryptinfo.getpassphrase = cb_get_passphrase;
if (armour) {
Index: src/crypto/external/bsd/netpgp/dist/src/lib/version.h
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/version.h:1.25 src/crypto/external/bsd/netpgp/dist/src/lib/version.h:1.26
--- src/crypto/external/bsd/netpgp/dist/src/lib/version.h:1.25 Thu Feb 11 17:46:09 2010
+++ src/crypto/external/bsd/netpgp/dist/src/lib/version.h Fri Feb 12 03:38:48 2010
@@ -58,7 +58,7 @@
#endif
/* development versions have .99 suffix */
-#define NETPGP_BASE_VERSION "1.99.18"
+#define NETPGP_BASE_VERSION "1.99.19"
#define NETPGP_VERSION_CAT(a, b) "NetPGP portable " a "/[" b "]"
#define NETPGP_VERSION_STRING \
Index: src/crypto/external/bsd/netpgp/dist/src/lib/reader.c
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/reader.c:1.29 src/crypto/external/bsd/netpgp/dist/src/lib/reader.c:1.30
--- src/crypto/external/bsd/netpgp/dist/src/lib/reader.c:1.29 Mon Feb 8 17:19:12 2010
+++ src/crypto/external/bsd/netpgp/dist/src/lib/reader.c Fri Feb 12 03:38:48 2010
@@ -54,7 +54,7 @@
#if defined(__NetBSD__)
__COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: reader.c,v 1.29 2010/02/08 17:19:12 agc Exp $");
+__RCSID("$NetBSD: reader.c,v 1.30 2010/02/12 03:38:48 agc Exp $");
#endif
#include <sys/types.h>
@@ -2173,14 +2173,14 @@
if (__ops_get_debug_level(__FILE__)) {
printf("OPS_PTAG_CT_PK_SESSION_KEY\n");
}
- if (!cbinfo->cryptinfo.keyring) {
+ if (!cbinfo->cryptinfo.secring) {
(void) fprintf(io->errs,
"pk_sesskey_cb: bad keyring\n");
return (__ops_cb_ret_t)0;
}
from = 0;
cbinfo->cryptinfo.keydata =
- __ops_getkeybyid(io, cbinfo->cryptinfo.keyring,
+ __ops_getkeybyid(io, cbinfo->cryptinfo.secring,
content->pk_sesskey.key_id, &from);
if (!cbinfo->cryptinfo.keydata) {
break;
@@ -2213,6 +2213,7 @@
{
const __ops_contents_t *content = &pkt->u;
const __ops_seckey_t *secret;
+ const __ops_key_t *pubkey;
const __ops_key_t *keypair;
unsigned from;
__ops_io_t *io;
@@ -2223,22 +2224,27 @@
}
switch (pkt->tag) {
case OPS_GET_SECKEY:
+ /* print key from pubring */
+ from = 0;
+ pubkey = __ops_getkeybyid(io, cbinfo->cryptinfo.pubring,
+ content->get_seckey.pk_sesskey->key_id,
+ &from);
+ /* validate key from secring */
from = 0;
cbinfo->cryptinfo.keydata =
- __ops_getkeybyid(io, cbinfo->cryptinfo.keyring,
+ __ops_getkeybyid(io, cbinfo->cryptinfo.secring,
content->get_seckey.pk_sesskey->key_id,
&from);
if (!cbinfo->cryptinfo.keydata ||
!__ops_is_key_secret(cbinfo->cryptinfo.keydata)) {
return (__ops_cb_ret_t)0;
}
-
keypair = cbinfo->cryptinfo.keydata;
do {
/* print out the user id */
- __ops_print_keydata(io, keypair, "pub", &keypair->key.pubkey);
+ __ops_print_keydata(io, pubkey, "pub", &pubkey->key.pubkey);
/* now decrypt key */
- secret = __ops_decrypt_seckey(keypair, NULL); /* XXX - agc */
+ secret = __ops_decrypt_seckey(keypair, cbinfo->passfp);
if (secret == NULL) {
(void) fprintf(io->errs, "Bad passphrase\n");
}
Index: src/crypto/external/bsd/netpgp/dist/src/lib/validate.c
diff -u src/crypto/external/bsd/netpgp/dist/src/lib/validate.c:1.28 src/crypto/external/bsd/netpgp/dist/src/lib/validate.c:1.29
--- src/crypto/external/bsd/netpgp/dist/src/lib/validate.c:1.28 Mon Feb 8 17:19:12 2010
+++ src/crypto/external/bsd/netpgp/dist/src/lib/validate.c Fri Feb 12 03:38:48 2010
@@ -54,7 +54,7 @@
#if defined(__NetBSD__)
__COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: validate.c,v 1.28 2010/02/08 17:19:12 agc Exp $");
+__RCSID("$NetBSD: validate.c,v 1.29 2010/02/12 03:38:48 agc Exp $");
#endif
#include <sys/types.h>
@@ -595,26 +595,31 @@
fmtsecs(int64_t n, char *buf, size_t size)
{
if (n > 365 * 24 * 60 * 60) {
- (void) snprintf(buf, size, "%" PRId64 " years", n / (365 * 24 * 60 * 60));
+ n /= (365 * 24 * 60 * 60);
+ (void) snprintf(buf, size, "%" PRId64 " year%s", n, (n == 1) ? "" : "s");
return buf;
}
if (n > 30 * 24 * 60 * 60) {
- (void) snprintf(buf, size, "%" PRId64 " months", n / (30 * 24 * 60 * 60));
+ n /= (30 * 24 * 60 * 60);
+ (void) snprintf(buf, size, "%" PRId64 " month%s", n, (n == 1) ? "" : "s");
return buf;
}
if (n > 24 * 60 * 60) {
- (void) snprintf(buf, size, "%" PRId64 " days", n / (24 * 60 * 60));
+ n /= (24 * 60 * 60);
+ (void) snprintf(buf, size, "%" PRId64 " day%s", n, (n == 1) ? "" : "s");
return buf;
}
if (n > 60 * 60) {
- (void) snprintf(buf, size, "%" PRId64 " hours", n / (60 * 60));
+ n /= (60 * 60);
+ (void) snprintf(buf, size, "%" PRId64 " hour%s", n, (n == 1) ? "" : "s");
return buf;
}
if (n > 60) {
- (void) snprintf(buf, size, "%" PRId64 " minutes", n / 60);
+ n /= 60;
+ (void) snprintf(buf, size, "%" PRId64 " minute%s", n, (n == 1) ? "" : "s");
return buf;
}
- (void) snprintf(buf, size, "%" PRId64 " seconds", n);
+ (void) snprintf(buf, size, "%" PRId64 " second%s", n, (n == 1) ? "" : "s");
return buf;
}
@@ -825,6 +830,7 @@
infd = __ops_setup_file_read(io, &parse, infile, &validation,
validate_data_cb, 1);
if (infd < 0) {
+ free(detachname);
return 0;
}
Index: src/crypto/external/bsd/netpgp/dist/src/netpgpverify/verify.c
diff -u src/crypto/external/bsd/netpgp/dist/src/netpgpverify/verify.c:1.2 src/crypto/external/bsd/netpgp/dist/src/netpgpverify/verify.c:1.3
--- src/crypto/external/bsd/netpgp/dist/src/netpgpverify/verify.c:1.2 Thu Jun 11 17:05:18 2009
+++ src/crypto/external/bsd/netpgp/dist/src/netpgpverify/verify.c Fri Feb 12 03:38:48 2010
@@ -55,7 +55,7 @@
#if defined(__NetBSD__)
__COPYRIGHT("@(#) Copyright (c) 2009 The NetBSD Foundation, Inc. All rights reserved.");
-__RCSID("$NetBSD: verify.c,v 1.2 2009/06/11 17:05:18 agc Exp $");
+__RCSID("$NetBSD: verify.c,v 1.3 2010/02/12 03:38:48 agc Exp $");
#endif
#include <sys/types.h>
@@ -161,13 +161,12 @@
#undef USE_SHA384
/* development versions have .99 suffix */
-#define NETPGP_BASE_VERSION "1.99.9"
+#define NETPGP_BASE_VERSION "1.99.19"
#define NETPGP_VERSION_CAT(a, b) "NetPGP portable " a "/[" b "]"
#define NETPGP_VERSION_STRING \
NETPGP_VERSION_CAT(NETPGP_BASE_VERSION, NETPGP_AUTOCONF_VERSION)
-
/* SHA1 Hash Size */
#define OPS_SHA1_HASH_SIZE SHA_DIGEST_LENGTH
#define OPS_SHA256_HASH_SIZE SHA256_DIGEST_LENGTH
@@ -9819,6 +9818,7 @@
infd = __ops_setup_file_read(io, &parse, infile, &validation,
validate_data_cb, 1);
if (infd < 0) {
+ free(detachname);
return 0;
}