mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
realloc() has that horrible overloaded free semantic when size is 0: current code does a free of the old record in this case, then fail.
(This used to be ctdb commit 8b6a5bba93843cd83b7b386b82949ad88f29884a)
This commit is contained in:
parent
1664d75ad3
commit
6e4577d08f
@ -584,8 +584,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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user