From: Jonathan McDowell Date: Mon, 31 May 2004 23:47:54 +0000 (+0000) Subject: cscvs to tla changeset 94 X-Git-Url: https://git.sommitrealweird.co.uk/onak.git/commitdiff_plain/32851537d44f08b08ed317cbc4281ce003f84fa4?ds=inline cscvs to tla changeset 94 Author: noodles Date: 2003/09/28 21:07:49 Tighten up error checking in a couple of places to avoid crashing without cleaning up the db. --- diff --git a/decodekey.c b/decodekey.c index 46c7583..fac501e 100644 --- a/decodekey.c +++ b/decodekey.c @@ -5,7 +5,7 @@ * * Copyright 2002 Project Purple * - * $Id: decodekey.c,v 1.3 2003/06/08 10:45:44 noodles Exp $ + * $Id: decodekey.c,v 1.4 2003/09/28 21:07:50 noodles Exp $ */ #include @@ -213,6 +213,7 @@ char **keyuids(struct openpgp_publickey *key, char **primary) char **uids = NULL; int count = 0; + *primary = NULL; if (key != NULL && key->uids != NULL) { uids = malloc((spsize(key->uids) + 1) * sizeof (char *)); @@ -228,12 +229,13 @@ char **keyuids(struct openpgp_publickey *key, char **primary) curuid = curuid -> next; } uids[count] = NULL; - } - /* - * TODO: Parse subpackets for real primary ID (v4 keys) - */ - if (primary != NULL) { - *primary = uids[0]; + + /* + * TODO: Parse subpackets for real primary ID (v4 keys) + */ + if (primary != NULL) { + *primary = uids[0]; + } } return uids; diff --git a/parsekey.c b/parsekey.c index 0f02e8c..a98e8cc 100644 --- a/parsekey.c +++ b/parsekey.c @@ -5,7 +5,7 @@ * * Copyright 2002 Project Purple * - * $Id: parsekey.c,v 1.8 2003/06/08 19:04:32 noodles Exp $ + * $Id: parsekey.c,v 1.9 2003/09/28 21:07:49 noodles Exp $ */ #include @@ -278,9 +278,16 @@ int read_openpgp_stream(int (*getchar_func)(void *ctx, size_t count, curpacket->packet->data = malloc(curpacket->packet->length * sizeof(unsigned char)); - rc = getchar_func(ctx, - curpacket->packet->length, - curpacket->packet->data); + if (curpacket->packet->data == NULL) { + logthing(LOGTHING_ERROR, + "Can't allocate memory for " + "packet!"); + rc = -1; + } else { + rc = getchar_func(ctx, + curpacket->packet->length, + curpacket->packet->data); + } } inpacket = false; } else {