summaryrefslogtreecommitdiff
path: root/source3/libsmb/clilist.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/libsmb/clilist.c')
-rw-r--r--source3/libsmb/clilist.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/source3/libsmb/clilist.c b/source3/libsmb/clilist.c
index 280f876ba7..87c66672e1 100644
--- a/source3/libsmb/clilist.c
+++ b/source3/libsmb/clilist.c
@@ -469,7 +469,7 @@ static NTSTATUS cli_list_old_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
NTSTATUS cli_list_old(struct cli_state *cli, const char *mask,
uint16 attribute,
- void (*fn)(const char *, struct file_info *,
+ NTSTATUS (*fn)(const char *, struct file_info *,
const char *, void *), void *state)
{
TALLOC_CTX *frame = talloc_stackframe();
@@ -504,7 +504,10 @@ NTSTATUS cli_list_old(struct cli_state *cli, const char *mask,
}
num_finfo = talloc_array_length(finfo);
for (i=0; i<num_finfo; i++) {
- fn(cli->dfs_mountpoint, &finfo[i], mask, state);
+ status = fn(cli->dfs_mountpoint, &finfo[i], mask, state);
+ if (!NT_STATUS_IS_OK(status)) {
+ goto fail;
+ }
}
fail:
TALLOC_FREE(frame);
@@ -795,7 +798,7 @@ static NTSTATUS cli_list_trans_recv(struct tevent_req *req,
NTSTATUS cli_list_trans(struct cli_state *cli, const char *mask,
uint16_t attribute, int info_level,
- void (*fn)(const char *mnt, struct file_info *finfo,
+ NTSTATUS (*fn)(const char *mnt, struct file_info *finfo,
const char *mask, void *private_data),
void *private_data)
{
@@ -830,7 +833,10 @@ NTSTATUS cli_list_trans(struct cli_state *cli, const char *mask,
}
num_finfo = talloc_array_length(finfo);
for (i=0; i<num_finfo; i++) {
- fn(cli->dfs_mountpoint, &finfo[i], mask, private_data);
+ status = fn(cli->dfs_mountpoint, &finfo[i], mask, private_data);
+ if (!NT_STATUS_IS_OK(status)) {
+ goto fail;
+ }
}
fail:
TALLOC_FREE(frame);
@@ -911,7 +917,7 @@ NTSTATUS cli_list_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
}
NTSTATUS cli_list(struct cli_state *cli, const char *mask, uint16 attribute,
- void (*fn)(const char *, struct file_info *, const char *,
+ NTSTATUS (*fn)(const char *, struct file_info *, const char *,
void *), void *state)
{
TALLOC_CTX *frame = talloc_stackframe();
@@ -952,7 +958,10 @@ NTSTATUS cli_list(struct cli_state *cli, const char *mask, uint16 attribute,
}
for (i=0; i<num_finfo; i++) {
- fn(cli->dfs_mountpoint, &finfo[i], mask, state);
+ status = fn(cli->dfs_mountpoint, &finfo[i], mask, state);
+ if (!NT_STATUS_IS_OK(status)) {
+ goto fail;
+ }
}
fail:
TALLOC_FREE(frame);