diff options
author | Amitay Isaacs <amitay@gmail.com> | 2018-03-19 13:38:28 +1100 |
---|---|---|
committer | Amitay Isaacs <amitay@samba.org> | 2018-03-27 04:27:24 +0200 |
commit | 92a68af1a8473dc2a5d9d6036830f944e968606d (patch) | |
tree | f8d6a0a6976b91cf455785a84b5628bd355af13c /ctdb/client | |
parent | 2610a3f2f7437309b259387e286e6e43d654b6e4 (diff) | |
download | samba-92a68af1a8473dc2a5d9d6036830f944e968606d.tar.gz |
ctdb-client: Do not try to allocate 0 sized record
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13356
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
Diffstat (limited to 'ctdb/client')
-rw-r--r-- | ctdb/client/client_db.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/ctdb/client/client_db.c b/ctdb/client/client_db.c index e86830e7bfb..a0c4cfed652 100644 --- a/ctdb/client/client_db.c +++ b/ctdb/client/client_db.c @@ -1413,14 +1413,19 @@ struct ctdb_record_handle *ctdb_fetch_lock_recv(struct tevent_req *req, offset = ctdb_ltdb_header_len(&h->header); data->dsize = h->data.dsize - offset; - data->dptr = talloc_memdup(mem_ctx, h->data.dptr + offset, - data->dsize); - if (data->dptr == NULL) { - TALLOC_FREE(state->h); - if (perr != NULL) { - *perr = ENOMEM; + if (data->dsize == 0) { + data->dptr = NULL; + } else { + data->dptr = talloc_memdup(mem_ctx, + h->data.dptr + offset, + data->dsize); + if (data->dptr == NULL) { + TALLOC_FREE(state->h); + if (perr != NULL) { + *perr = ENOMEM; + } + return NULL; } - return NULL; } } |