diff options
author | Stefan Metzmacher <metze@samba.org> | 2011-07-06 13:04:26 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2011-07-06 17:18:13 +0200 |
commit | bc98d004c9dc22ff1438bfd1d9ddeaca5a3f6179 (patch) | |
tree | 1ddf47cf81a3d7e1cee5a3a46d05f4181d0cd2bb /source3 | |
parent | af61f6fce6a219a78238d7187476addaa1e00525 (diff) | |
download | samba-bc98d004c9dc22ff1438bfd1d9ddeaca5a3f6179.tar.gz samba-bc98d004c9dc22ff1438bfd1d9ddeaca5a3f6179.tar.bz2 samba-bc98d004c9dc22ff1438bfd1d9ddeaca5a3f6179.zip |
s3:libsmb: don't use cli->inbuf in cli_dfs_get_referral()
The rdata buffer returned by cli_trans() doesn't belong to
cli->inbuf, so don't use it.
metze
Diffstat (limited to 'source3')
-rw-r--r-- | source3/libsmb/clidfs.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/source3/libsmb/clidfs.c b/source3/libsmb/clidfs.c index 8df5423664..2287812c18 100644 --- a/source3/libsmb/clidfs.c +++ b/source3/libsmb/clidfs.c @@ -608,7 +608,8 @@ NTSTATUS cli_dfs_get_referral(TALLOC_CTX *ctx, { unsigned int data_len = 0; unsigned int param_len = 0; - uint16 setup[1]; + uint16_t setup[1]; + uint16_t recv_flags2; uint8_t *param = NULL; uint8_t *rdata = NULL; char *p; @@ -643,7 +644,7 @@ NTSTATUS cli_dfs_get_referral(TALLOC_CTX *ctx, setup, 1, 0, param, param_len, 2, NULL, 0, cli->max_xmit, - NULL, + &recv_flags2, NULL, 0, NULL, /* rsetup */ NULL, 0, NULL, &rdata, 4, &data_len); @@ -720,11 +721,12 @@ NTSTATUS cli_dfs_get_referral(TALLOC_CTX *ctx, status = NT_STATUS_INVALID_NETWORK_RESPONSE; goto out; } - clistr_pull_talloc(ctx, cli->inbuf, - SVAL(cli->inbuf, smb_flg2), + clistr_pull_talloc(referrals, + (const char *)rdata, + recv_flags2, &referrals[i].dfspath, p+node_offset, - cli->bufsize - ((p+node_offset)-cli->inbuf), + PTR_DIFF(endp, p+node_offset), STR_TERMINATE|STR_UNICODE); if (!referrals[i].dfspath) { |