summaryrefslogtreecommitdiff
path: root/source3/libsmb
diff options
context:
space:
mode:
Diffstat (limited to 'source3/libsmb')
-rw-r--r--source3/libsmb/clidfs.c1
-rw-r--r--source3/libsmb/clifile.c7
-rw-r--r--source3/libsmb/clilist.c16
-rw-r--r--source3/libsmb/clistr.c7
4 files changed, 22 insertions, 9 deletions
diff --git a/source3/libsmb/clidfs.c b/source3/libsmb/clidfs.c
index 345d0f9212..f4b52687f8 100644
--- a/source3/libsmb/clidfs.c
+++ b/source3/libsmb/clidfs.c
@@ -717,6 +717,7 @@ bool cli_dfs_get_referral(TALLOC_CTX *ctx,
goto out;
}
clistr_pull_talloc(ctx, cli->inbuf,
+ SVAL(cli->inbuf, smb_flg2),
&referrals[i].dfspath,
p+node_offset, -1,
STR_TERMINATE|STR_UNICODE);
diff --git a/source3/libsmb/clifile.c b/source3/libsmb/clifile.c
index 2067b79c52..48af0cc56d 100644
--- a/source3/libsmb/clifile.c
+++ b/source3/libsmb/clifile.c
@@ -5022,8 +5022,9 @@ static void cli_notify_done(struct tevent_req *subreq)
NTSTATUS status;
uint8_t *params;
uint32_t i, ofs, num_params;
+ uint16_t flags2;
- status = cli_trans_recv(subreq, talloc_tos(), NULL, NULL, 0, NULL,
+ status = cli_trans_recv(subreq, talloc_tos(), &flags2, NULL, 0, NULL,
&params, 0, &num_params, NULL, 0, NULL);
TALLOC_FREE(subreq);
if (!NT_STATUS_IS_OK(status)) {
@@ -5068,8 +5069,8 @@ static void cli_notify_done(struct tevent_req *subreq)
}
state->changes[i].action = IVAL(params, ofs+4);
- ret = clistr_pull_talloc(params, (char *)params, &name,
- params+ofs+12, len,
+ ret = clistr_pull_talloc(params, (char *)params, flags2,
+ &name, params+ofs+12, len,
STR_TERMINATE|STR_UNICODE);
if (ret == -1) {
TALLOC_FREE(params);
diff --git a/source3/libsmb/clilist.c b/source3/libsmb/clilist.c
index 56de119281..d0583f4e10 100644
--- a/source3/libsmb/clilist.c
+++ b/source3/libsmb/clilist.c
@@ -46,6 +46,8 @@ static size_t calc_next_entry_offset(const char *base, const char *pdata_end)
static size_t interpret_long_filename(TALLOC_CTX *ctx,
struct cli_state *cli,
int level,
+ const char *base_ptr,
+ uint16_t recv_flags2,
const char *p,
const char *pdata_end,
struct file_info *finfo,
@@ -101,7 +103,8 @@ static size_t interpret_long_filename(TALLOC_CTX *ctx,
between win2000 and win9x for this call
(tridge) */
ret = clistr_pull_talloc(ctx,
- cli->inbuf,
+ base_ptr,
+ recv_flags2,
&finfo->name,
p,
len+2,
@@ -133,7 +136,8 @@ static size_t interpret_long_filename(TALLOC_CTX *ctx,
return pdata_end - base;
}
ret = clistr_pull_talloc(ctx,
- cli->inbuf,
+ base_ptr,
+ recv_flags2,
&finfo->name,
p,
len,
@@ -194,7 +198,8 @@ static size_t interpret_long_filename(TALLOC_CTX *ctx,
return pdata_end - base;
}
ret = clistr_pull_talloc(ctx,
- cli->inbuf,
+ base_ptr,
+ recv_flags2,
&finfo->name,
p,
namelen,
@@ -408,6 +413,8 @@ int cli_list_new(struct cli_state *cli,const char *Mask,uint16 attribute,
p2 += interpret_long_filename(frame,
cli,
info_level,
+ cli->inbuf,
+ SVAL(cli->inbuf, smb_flg2),
p2,
rdata_end,
&finfo,
@@ -478,6 +485,8 @@ int cli_list_new(struct cli_state *cli,const char *Mask,uint16 attribute,
p += interpret_long_filename(frame,
cli,
info_level,
+ cli->inbuf,
+ SVAL(cli->inbuf, smb_flg2),
p,
rdata_end,
&finfo,
@@ -523,6 +532,7 @@ static bool interpret_short_filename(TALLOC_CTX *ctx,
finfo->size = IVAL(p,26);
ret = clistr_pull_talloc(ctx,
cli->inbuf,
+ SVAL(cli->inbuf, smb_flg2),
&finfo->name,
p+30,
12,
diff --git a/source3/libsmb/clistr.c b/source3/libsmb/clistr.c
index 4e49091312..00b9bb2483 100644
--- a/source3/libsmb/clistr.c
+++ b/source3/libsmb/clistr.c
@@ -68,7 +68,8 @@ size_t clistr_pull_fn(const char *function,
size_t clistr_pull_talloc_fn(const char *function,
unsigned int line,
TALLOC_CTX *ctx,
- const char *inbuf,
+ const char *base,
+ uint16_t flags2,
char **pp_dest,
const void *src,
int src_len,
@@ -77,8 +78,8 @@ size_t clistr_pull_talloc_fn(const char *function,
return pull_string_talloc_fn(function,
line,
ctx,
- inbuf,
- SVAL(inbuf, smb_flg2),
+ base,
+ flags2,
pp_dest,
src,
src_len,