ndr: skip talloc when pulling empty DATA_BLOB
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Fri, 29 Dec 2023 02:15:48 +0000 (15:15 +1300)
committerJule Anger <janger@samba.org>
Mon, 12 Feb 2024 10:53:13 +0000 (10:53 +0000)
Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15574
(cherry picked from commit c2673b02a7a51761e8b6631eb0c0e7062cbbed7b)

librpc/ndr/ndr_basic.c

index fc8620f28c77e8ef68dcb71d67d3e9215687bab2..5fd15730a74cee7f5156a78bdd8c6449896bb530 100644 (file)
@@ -1453,6 +1453,12 @@ _PUBLIC_ enum ndr_err_code ndr_pull_DATA_BLOB(struct ndr_pull *ndr, ndr_flags_ty
        } else {
                NDR_CHECK(ndr_pull_uint3264(ndr, NDR_SCALARS, &length));
        }
+       if (length == 0) {
+               /* skip the talloc for an empty blob */
+               blob->data = NULL;
+               blob->length = 0;
+               return NDR_ERR_SUCCESS;
+       }
        NDR_PULL_NEED_BYTES(ndr, length);
        *blob = data_blob_talloc(ndr->current_mem_ctx, ndr->data+ndr->offset, length);
        ndr->offset += length;