ctdb-client: Do not try to allocate 0 sized record
authorAmitay Isaacs <amitay@gmail.com>
Mon, 19 Mar 2018 02:38:28 +0000 (13:38 +1100)
committerAmitay Isaacs <amitay@samba.org>
Tue, 27 Mar 2018 02:27:24 +0000 (04:27 +0200)
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>
ctdb/client/client_db.c

index e86830e7bfb99009e9a7010c347c6b129121107c..a0c4cfed652502b784403fdd3debd53c9ce6937b 100644 (file)
@@ -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;
                }
        }