From 32851537d44f08b08ed317cbc4281ce003f84fa4 Mon Sep 17 00:00:00 2001
From: Jonathan McDowell <noodles@earth.li>
Date: Mon, 31 May 2004 23:47:54 +0000
Subject: [PATCH] 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.

---
 decodekey.c | 16 +++++++++-------
 parsekey.c  | 15 +++++++++++----
 2 files changed, 20 insertions(+), 11 deletions(-)

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 <assert.h>
@@ -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 <assert.h>
@@ -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 {
-- 
2.39.5