X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb%2Ftdb.c;h=db5e5b49e4b663eeb290401d7346342d870b6a28;hp=dffc55b94d6fb1e16ed728fc267059d2c05e35a2;hb=cd065f97d15e08493e96972c9e4b9a619cd26154;hpb=195b605e88209772a4b2bc2e0ef32e610e62feb7 diff --git a/ccan/tdb/tdb.c b/ccan/tdb/tdb.c index dffc55b9..db5e5b49 100644 --- a/ccan/tdb/tdb.c +++ b/ccan/tdb/tdb.c @@ -623,8 +623,13 @@ int tdb_append(struct tdb_context *tdb, TDB_DATA key, TDB_DATA new_dbuf) if (dbuf.dptr == NULL) { dbuf.dptr = (unsigned char *)malloc(new_dbuf.dsize); } else { - unsigned char *new_dptr = (unsigned char *)realloc(dbuf.dptr, - dbuf.dsize + new_dbuf.dsize); + unsigned int new_len = dbuf.dsize + new_dbuf.dsize; + unsigned char *new_dptr; + + /* realloc '0' is special: don't do that. */ + if (new_len == 0) + new_len = 1; + new_dptr = (unsigned char *)realloc(dbuf.dptr, new_len); if (new_dptr == NULL) { free(dbuf.dptr); }