diff options
author | Volker Lendecke <vl@samba.org> | 2020-04-21 14:32:16 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2020-05-14 20:29:38 +0000 |
commit | 46ab1d478d8c27bb4837bf277f8eae5d59613dd2 (patch) | |
tree | 001c9d280337520052ffb51f1b37e3042b3ba53e /source3/rpc_server | |
parent | bda0b3875d965c5cccd09dc09f593229e268ee9b (diff) | |
download | samba-46ab1d478d8c27bb4837bf277f8eae5d59613dd2.tar.gz |
srvsvc: Collect file ids in enum_file_fn()
Will be used a few patches down
Bug: https://bugzilla.samba.org/show_bug.cgi?id=14355
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'source3/rpc_server')
-rw-r--r-- | source3/rpc_server/srvsvc/srv_srvsvc_nt.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c index 6140e852743..c7bd28509fc 100644 --- a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c +++ b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c @@ -54,6 +54,7 @@ struct file_enum_count { TALLOC_CTX *ctx; const char *username; struct srvsvc_NetFileCtr3 *ctr3; + struct file_id *fids; }; struct sess_file_info { @@ -90,6 +91,7 @@ static int enum_file_fn(struct file_id id, (struct file_enum_count *)private_data; struct srvsvc_NetFileCtr3 *ctr3 = fenum->ctr3; struct srvsvc_NetFileInfo3 *f; + struct file_id *fids = NULL; files_struct fsp; struct byte_range_lock *brl; int num_locks = 0; @@ -121,10 +123,18 @@ static int enum_file_fn(struct file_id id, } ctr3->array = f; + fids = talloc_realloc( + fenum->ctx, fenum->fids, struct file_id, ctr3->count+1); + if (fids == NULL) { + DBG_ERR("realloc failed for %"PRIu32" items\n", ctr3->count+1); + return 0; + } + fids[ctr3->count] = id; + fenum->fids = fids; + /* need to count the number of locks on a file */ - ZERO_STRUCT( fsp ); - fsp.file_id = id; + fsp = (struct files_struct) { .file_id = id, }; if ( (brl = brl_get_locks(talloc_tos(), &fsp)) != NULL ) { num_locks = brl_num_locks(brl); |