summaryrefslogtreecommitdiff
path: root/source3/rpc_server
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2020-04-21 14:32:16 +0200
committerStefan Metzmacher <metze@samba.org>2020-05-14 20:29:38 +0000
commit46ab1d478d8c27bb4837bf277f8eae5d59613dd2 (patch)
tree001c9d280337520052ffb51f1b37e3042b3ba53e /source3/rpc_server
parentbda0b3875d965c5cccd09dc09f593229e268ee9b (diff)
downloadsamba-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.c14
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);