Windows: return ENOMEM from cm_BPlus functions on malloc failure
authorJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 8 Dec 2009 14:38:53 +0000 (09:38 -0500)
committerJeffrey Altman <jaltman|account-1000011@unknown>
Wed, 13 Jan 2010 05:55:29 +0000 (21:55 -0800)
There are several cm_BPlus functions that do not return
an error code on malloc failure.

LICENSE MIT

Change-Id: I3a3d78cc6d6844c78e51fa81ebf330f5af88a7a5
Reviewed-on: http://gerrit.openafs.org/900
Tested-by: Jeffrey Altman <jaltman@openafs.org>
Reviewed-by: Rod Widdowson <rdw@steadingsoftware.com>
Reviewed-by: Asanka Herath <asanka@secure-endpoints.com>
Tested-by: Asanka Herath <asanka@secure-endpoints.com>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>

src/WINNT/afsd/cm_btree.c

index 58dee14..5002832 100644 (file)
@@ -2164,8 +2164,10 @@ cm_BPlusEnumAlloc(afs_uint32 entries)
     else
         size = sizeof(cm_direnum_t)+(entries-1)*sizeof(cm_direnum_entry_t);
     enump = (cm_direnum_t *)malloc(size);
-    memset(enump, 0, size);
-    enump->count = entries;
+    if (enump) {
+        memset(enump, 0, size);
+        enump->count = entries;
+    }
     return enump;
 }
 
@@ -2340,6 +2342,8 @@ cm_BPlusDirEnumBulkStat(cm_direnum_t *enump)
         return 0;
 
     bsp = malloc(sizeof(cm_bulkStat_t));
+    if (!bsp)
+        return ENOMEM;
     memset(bsp, 0, sizeof(cm_bulkStat_t));
 
     for ( count = 0; count < enump->count; count++ ) {
@@ -2400,6 +2404,8 @@ cm_BPlusDirEnumBulkStatNext(cm_direnum_t *enump)
         return 0;
 
     bsp = malloc(sizeof(cm_bulkStat_t));
+    if (!bsp)
+        return ENOMEM;
     memset(bsp, 0, sizeof(cm_bulkStat_t));
 
     for ( count = enump->next; count < enump->count; count++ ) {