summaryrefslogtreecommitdiff
path: root/ctdb/client
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@gmail.com>2018-03-19 13:38:28 +1100
committerAmitay Isaacs <amitay@samba.org>2018-03-27 04:27:24 +0200
commit92a68af1a8473dc2a5d9d6036830f944e968606d (patch)
treef8d6a0a6976b91cf455785a84b5628bd355af13c /ctdb/client
parent2610a3f2f7437309b259387e286e6e43d654b6e4 (diff)
downloadsamba-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.c19
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;
}
}