Index: trunk/Nebulous/nebclient/src/nebclient.c
===================================================================
--- trunk/Nebulous/nebclient/src/nebclient.c	(revision 24997)
+++ trunk/Nebulous/nebclient/src/nebclient.c	(revision 24999)
@@ -812,7 +812,7 @@
     }
 
-    nullstrncpy(stat->so_id, resultArray[0], 256);
-    nullstrncpy(stat->ext_id, resultArray[1], 256);
-    nullstrncpy(stat->read_lock, resultArray[2], 256);
+    stat->so_id     = atol(resultArray[0]);
+    stat->ext_id    = atol(resultArray[1]);
+    stat->read_lock = atoi(resultArray[2]);
     nullstrncpy(stat->write_lock, resultArray[3], 256);
     nullstrncpy(stat->epoch, resultArray[4], 256);
@@ -831,11 +831,5 @@
     }
 
-    xfree(stat->so_id);
-    xfree(stat->ext_id);
-    xfree(stat->read_lock);
-    xfree(stat->write_lock);
-    xfree(stat->epoch);
-    xfree(stat->mtime);
-    xfree(stat);
+    nebFree(stat);
 }
 
@@ -935,14 +929,16 @@
             return -1;
         }
+
+        int available = stat->available;
+        nebObjectStatFree(stat);
+
         // start at one so cull() is called one less time then the # of
         // instances
-        for (long i = 1; i < stat->available; i++) {
+        for (long i = 1; i < available; i++) {
             if (!nebCull(server, key)) {
-                nebObjectStatFree(stat);
                 return -1;
             }
             removed++;
         }
-        nebObjectStatFree(stat);
     }
 
@@ -958,4 +954,5 @@
 
 void nebFree(void *ptr) {
+    if (!ptr) { return; }
     xfree(ptr);
 }
@@ -1197,4 +1194,8 @@
     }
 
+    if (!dest) {
+        dest = xmalloc(n + 1);
+    }
+
     return strncpy(dest, src, n);
 }
Index: trunk/Nebulous/nebclient/src/nebclient.h
===================================================================
--- trunk/Nebulous/nebclient/src/nebclient.h	(revision 24997)
+++ trunk/Nebulous/nebclient/src/nebclient.h	(revision 24999)
@@ -38,7 +38,7 @@
 
 typedef struct {
-    char            so_id[256];         ///< storage object ID
-    char            ext_id[256];        ///< storage object key (name)
-    char            read_lock[256];     ///< read lock value
+    long            so_id;              ///< storage object ID
+    long            ext_id;             ///< storage object key (name)
+    int             read_lock;          ///< read lock value
     char            write_lock[256];    ///< write lock value
     char            epoch[256];         ///< creation time stamp
Index: trunk/Nebulous/nebclient/tests/tests.c
===================================================================
--- trunk/Nebulous/nebclient/tests/tests.c	(revision 24997)
+++ trunk/Nebulous/nebclient/tests/tests.c	(revision 24999)
@@ -98,10 +98,9 @@
 
     char *copies = nebGetXattr(server, key, "user.copies");
-    neb_ok(server, strcmp(copies, "2") == 0, "get user.copies xattr");
+    neb_ok(server, copies != NULL && strcmp(copies, "2") == 0, "get user.copies xattr");
     char **xattrs = NULL;
     int n_xattrs = nebListXattr(server, key, &xattrs);
-    printf("# %s\n\n", xattrs[0]);
-    neb_ok(server, n_xattrs == 1, "count of xattrs");
-    neb_ok(server, strcmp(xattrs[0], "user.copies") == 0, "user.copies xattr exists");
+    neb_ok(server, xattrs != NULL && n_xattrs == 1, "count of xattrs");
+    neb_ok(server, xattrs != NULL && strcmp(xattrs[0], "user.copies") == 0, "user.copies xattr exists");
     neb_ok(server, nebRemoveXattr(server, key, "user.copies"), "remove user.copies xattr");
 
