]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
smbd: Convert get_share_mode_blob_header() to use a const ptr
authorVolker Lendecke <vl@samba.org>
Fri, 24 Apr 2020 06:55:35 +0000 (08:55 +0200)
committerRalph Boehme <slow@samba.org>
Tue, 5 May 2020 11:48:40 +0000 (11:48 +0000)
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/locking/share_mode_lock.c

index 5b6c02a31a121c27af8d022fbc2bbf7a0567ddbc..bbe22db10e51be18e39027c53e94b11711a55095 100644 (file)
@@ -211,9 +211,12 @@ static void share_mode_memcache_store(struct share_mode_data *d)
  */
 
 static enum ndr_err_code get_share_mode_blob_header(
-       DATA_BLOB *blob, uint64_t *pseq, uint16_t *pflags)
+       const uint8_t *buf, size_t buflen, uint64_t *pseq, uint16_t *pflags)
 {
-       struct ndr_pull ndr = {.data = blob->data, .data_size = blob->length};
+       struct ndr_pull ndr = {
+               .data = discard_const_p(uint8_t, buf),
+               .data_size = buflen,
+       };
        NDR_CHECK(ndr_pull_hyper(&ndr, NDR_SCALARS, pseq));
        NDR_CHECK(ndr_pull_uint16(&ndr, NDR_SCALARS, pflags));
        return NDR_ERR_SUCCESS;
@@ -228,11 +231,10 @@ static void fsp_update_share_mode_flags_fn(
        TDB_DATA value, bool *modified_dependent, void *private_data)
 {
        struct fsp_update_share_mode_flags_state *state = private_data;
-       DATA_BLOB blob = { .data = value.dptr, .length = value.dsize };
        uint64_t seq;
 
        state->ndr_err = get_share_mode_blob_header(
-               &blob, &seq, &state->share_mode_flags);
+               value.dptr, value.dsize, &seq, &state->share_mode_flags);
 }
 
 static NTSTATUS fsp_update_share_mode_flags(struct files_struct *fsp)
@@ -313,7 +315,8 @@ static struct share_mode_data *share_mode_memcache_fetch(TALLOC_CTX *mem_ctx,
                return NULL;
        }
        /* sequence number key is at start of blob. */
-       ndr_err = get_share_mode_blob_header(blob, &sequence_number, &flags);
+       ndr_err = get_share_mode_blob_header(
+               blob->data, blob->length, &sequence_number, &flags);
        if (ndr_err != NDR_ERR_SUCCESS) {
                /* Bad blob. Remove entry. */
                DBG_DEBUG("bad blob %u key %s\n",