cscvs to tla changeset 94
authorJonathan McDowell <noodles@earth.li>
Mon, 31 May 2004 23:47:54 +0000 (23:47 +0000)
committerJonathan McDowell <noodles@earth.li>
Mon, 31 May 2004 23:47:54 +0000 (23:47 +0000)
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
parsekey.c

index 46c75833d3317a41d6bca8084dc1e525e1037a12..fac501ea918e842e36b81ecef07eedd01d0bd99c 100644 (file)
@@ -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;
index 0f02e8cf757f8839f2fd609c151e7d2202412aec..a98e8cc7952277a90e2e9f2994ad097dafc28d3d 100644 (file)
@@ -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 {