Browse Source

Fix theoretical problem with 0-length records.
By faking them out to length 1, we might go oob. Just fake the malloc.

Rusty Russell 16 years ago
parent
commit
195b605e88
1 changed files with 1 additions and 5 deletions
  1. 1 5
      ccan/tdb/io.c

+ 1 - 5
ccan/tdb/io.c

@@ -383,11 +383,7 @@ unsigned char *tdb_alloc_read(struct tdb_context *tdb, tdb_off_t offset, tdb_len
 	unsigned char *buf;
 
 	/* some systems don't like zero length malloc */
-	if (len == 0) {
-		len = 1;
-	}
-
-	if (!(buf = (unsigned char *)malloc(len))) {
+	if (!(buf = (unsigned char *)malloc(len ? len : 1))) {
 		/* Ensure ecode is set for log fn. */
 		tdb->ecode = TDB_ERR_OOM;
 		TDB_LOG((tdb, TDB_DEBUG_ERROR,"tdb_alloc_read malloc failed len=%d (%s)\n",