The branch, master has been updated
via 0b8184d s4:torture/smb2: s/smb2cli_unlock/test_smb2_unlock
via 43c865a s4:torture/smb2: s/smb2cli_lock/test_smb2_lock
via 8a22906 s3:libsmb: use clistr_pull_talloc() in cli_qfilename()
via a1df729 s3:libsmb: let cli_qfileinfo[_recv]() return recv_flags2
via 2b0cc3c s3:libsmb: use clistr_pull_talloc() in
cli_get_fs_volume_info()
via 27736be s3:libsmb: the SMB_QUERY_FS_VOLUME_INFO response needs at
least 18 data bytes
via bc98d00 s3:libsmb: don't use cli->inbuf in cli_dfs_get_referral()
via af61f6f s3:libsmb: fix error handling in cli_dfs_get_referral()
from f9601a9 s3:sharesec: return an error if get_share_security()
returns NULL
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 0b8184d9d40c6ccb10209973e6bbeccee4dc000a
Author: Stefan Metzmacher <[email protected]>
Date: Wed Jul 6 17:52:33 2011 +0200
s4:torture/smb2: s/smb2cli_unlock/test_smb2_unlock
metze
Autobuild-User: Stefan Metzmacher <[email protected]>
Autobuild-Date: Wed Jul 6 19:07:42 CEST 2011 on sn-devel-104
commit 43c865a38e534ec6f01643f9609cbccd9de976f8
Author: Stefan Metzmacher <[email protected]>
Date: Wed Jul 6 17:52:33 2011 +0200
s4:torture/smb2: s/smb2cli_lock/test_smb2_lock
metze
commit 8a2290667ca4c530321d366d3dd09f4757e9ac1d
Author: Stefan Metzmacher <[email protected]>
Date: Wed Jul 6 14:35:13 2011 +0200
s3:libsmb: use clistr_pull_talloc() in cli_qfilename()
metze
commit a1df729f7b498c770a013ddabb38d0b2e8608b67
Author: Stefan Metzmacher <[email protected]>
Date: Wed Jul 6 14:04:15 2011 +0200
s3:libsmb: let cli_qfileinfo[_recv]() return recv_flags2
metze
commit 2b0cc3c412d2cad5e35728f86cc66109f5dc4676
Author: Stefan Metzmacher <[email protected]>
Date: Wed Jul 6 13:57:20 2011 +0200
s3:libsmb: use clistr_pull_talloc() in cli_get_fs_volume_info()
metze
commit 27736bed83191ccad69e5ad7732cc8ed60c5864f
Author: Stefan Metzmacher <[email protected]>
Date: Wed Jul 6 13:21:41 2011 +0200
s3:libsmb: the SMB_QUERY_FS_VOLUME_INFO response needs at least 18 data
bytes
metze
commit bc98d004c9dc22ff1438bfd1d9ddeaca5a3f6179
Author: Stefan Metzmacher <[email protected]>
Date: Wed Jul 6 13:04:26 2011 +0200
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
commit af61f6fce6a219a78238d7187476addaa1e00525
Author: Stefan Metzmacher <[email protected]>
Date: Wed Jul 6 15:57:22 2011 +0200
s3:libsmb: fix error handling in cli_dfs_get_referral()
We should not return NT_STATUS_OK on error.
metze
-----------------------------------------------------------------------
Summary of changes:
source3/client/client.c | 7 +++--
source3/libsmb/clidfs.c | 26 +++++++++++++++++-------
source3/libsmb/clifile.c | 14 ++++++++++--
source3/libsmb/clifsinfo.c | 34 ++++++++++++++++++++++++++------
source3/libsmb/clirap.c | 32 ++++++++++++++++++++++++++----
source3/libsmb/clirap.h | 7 +++--
source3/libsmb/proto.h | 3 +-
source3/torture/torture.c | 6 ++--
source4/torture/smb2/lock.c | 44 +++++++++++++++++++++---------------------
9 files changed, 118 insertions(+), 55 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/client/client.c b/source3/client/client.c
index e2efad8..aa26d99 100644
--- a/source3/client/client.c
+++ b/source3/client/client.c
@@ -3767,12 +3767,13 @@ static int cmd_rename(void)
static int cmd_volume(void)
{
- fstring volname;
- uint32 serial_num;
+ char *volname;
+ uint32_t serial_num;
time_t create_date;
NTSTATUS status;
- status = cli_get_fs_volume_info(cli, volname, &serial_num,
+ status = cli_get_fs_volume_info(cli, talloc_tos(),
+ &volname, &serial_num,
&create_date);
if (!NT_STATUS_IS_OK(status)) {
d_printf("Error %s getting volume info\n", nt_errstr(status));
diff --git a/source3/libsmb/clidfs.c b/source3/libsmb/clidfs.c
index 9c0f1f4..2287812 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,16 +644,13 @@ 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);
if (!NT_STATUS_IS_OK(status)) {
goto out;
}
- if (data_len < 4) {
- goto out;
- }
endp = (char *)rdata + data_len;
@@ -666,6 +664,7 @@ NTSTATUS cli_dfs_get_referral(TALLOC_CTX *ctx,
* to get the number of bytes consumed from
* the incoming path. */
+ errno = 0;
if (pull_string_talloc(talloc_tos(),
NULL,
0,
@@ -673,9 +672,15 @@ NTSTATUS cli_dfs_get_referral(TALLOC_CTX *ctx,
path_ucs,
consumed_ucs,
STR_UNICODE) == 0) {
+ if (errno != 0) {
+ status = map_nt_error_from_unix(errno);
+ } else {
+ status = NT_STATUS_INVALID_NETWORK_RESPONSE;
+ }
goto out;
}
if (consumed_path == NULL) {
+ status = map_nt_error_from_unix(errno);
goto out;
}
*consumed = strlen(consumed_path);
@@ -690,6 +695,7 @@ NTSTATUS cli_dfs_get_referral(TALLOC_CTX *ctx,
num_referrals);
if (!referrals) {
+ status = NT_STATUS_NO_MEMORY;
goto out;
}
/* start at the referrals array */
@@ -712,21 +718,25 @@ NTSTATUS cli_dfs_get_referral(TALLOC_CTX *ctx,
referrals[i].ttl = SVAL(p, 10);
if (p + node_offset > endp) {
+ 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) {
+ status = map_nt_error_from_unix(errno);
goto out;
}
p += ref_size;
}
if (i < num_referrals) {
+ status = NT_STATUS_INVALID_NETWORK_RESPONSE;
goto out;
}
}
diff --git a/source3/libsmb/clifile.c b/source3/libsmb/clifile.c
index 88cecd5..eab278f 100644
--- a/source3/libsmb/clifile.c
+++ b/source3/libsmb/clifile.c
@@ -5059,6 +5059,7 @@ struct cli_qfileinfo_state {
uint16_t setup[1];
uint8_t param[4];
uint8_t *data;
+ uint16_t recv_flags2;
uint32_t min_rdata;
uint8_t *rdata;
uint32_t num_rdata;
@@ -5118,7 +5119,9 @@ static void cli_qfileinfo_done(struct tevent_req *subreq)
req, struct cli_qfileinfo_state);
NTSTATUS status;
- status = cli_trans_recv(subreq, state, NULL, NULL, 0, NULL,
+ status = cli_trans_recv(subreq, state,
+ &state->recv_flags2,
+ NULL, 0, NULL,
NULL, 0, NULL,
&state->rdata, state->min_rdata,
&state->num_rdata);
@@ -5129,6 +5132,7 @@ static void cli_qfileinfo_done(struct tevent_req *subreq)
}
NTSTATUS cli_qfileinfo_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
+ uint16_t *recv_flags2,
uint8_t **rdata, uint32_t *num_rdata)
{
struct cli_qfileinfo_state *state = tevent_req_data(
@@ -5138,6 +5142,10 @@ NTSTATUS cli_qfileinfo_recv(struct tevent_req *req,
TALLOC_CTX *mem_ctx,
if (tevent_req_is_nterror(req, &status)) {
return status;
}
+
+ if (recv_flags2 != NULL) {
+ *recv_flags2 = state->recv_flags2;
+ }
if (rdata != NULL) {
*rdata = talloc_move(mem_ctx, &state->rdata);
} else {
@@ -5151,7 +5159,7 @@ NTSTATUS cli_qfileinfo_recv(struct tevent_req *req,
TALLOC_CTX *mem_ctx,
NTSTATUS cli_qfileinfo(TALLOC_CTX *mem_ctx, struct cli_state *cli,
uint16_t fnum, uint16_t level, uint32_t min_rdata,
- uint32_t max_rdata,
+ uint32_t max_rdata, uint16_t *recv_flags2,
uint8_t **rdata, uint32_t *num_rdata)
{
TALLOC_CTX *frame = talloc_stackframe();
@@ -5178,7 +5186,7 @@ NTSTATUS cli_qfileinfo(TALLOC_CTX *mem_ctx, struct
cli_state *cli,
if (!tevent_req_poll_ntstatus(req, ev, &status)) {
goto fail;
}
- status = cli_qfileinfo_recv(req, mem_ctx, rdata, num_rdata);
+ status = cli_qfileinfo_recv(req, mem_ctx, recv_flags2, rdata,
num_rdata);
fail:
TALLOC_FREE(frame);
return status;
diff --git a/source3/libsmb/clifsinfo.c b/source3/libsmb/clifsinfo.c
index 78024c8..02b2578 100644
--- a/source3/libsmb/clifsinfo.c
+++ b/source3/libsmb/clifsinfo.c
@@ -354,15 +354,20 @@ fail:
return status;
}
-NTSTATUS cli_get_fs_volume_info(struct cli_state *cli, fstring volume_name,
- uint32 *pserial_number, time_t *pdate)
+NTSTATUS cli_get_fs_volume_info(struct cli_state *cli,
+ TALLOC_CTX *mem_ctx,
+ char **_volume_name,
+ uint32_t *pserial_number,
+ time_t *pdate)
{
NTSTATUS status;
- uint16 setup[1];
+ uint16_t recv_flags2;
+ uint16_t setup[1];
uint8_t param[2];
uint8_t *rdata;
uint32_t rdata_count;
unsigned int nlen;
+ char *volume_name = NULL;
SSVAL(setup, 0, TRANSACT2_QFSINFO);
SSVAL(param,0,SMB_QUERY_FS_VOLUME_INFO);
@@ -372,10 +377,10 @@ NTSTATUS cli_get_fs_volume_info(struct cli_state *cli,
fstring volume_name,
setup, 1, 0,
param, 2, 0,
NULL, 0, 560,
- NULL,
+ &recv_flags2,
NULL, 0, NULL,
NULL, 0, NULL,
- &rdata, 10, &rdata_count);
+ &rdata, 18, &rdata_count);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
@@ -389,13 +394,28 @@ NTSTATUS cli_get_fs_volume_info(struct cli_state *cli,
fstring volume_name,
*pserial_number = IVAL(rdata,8);
}
nlen = IVAL(rdata,12);
- clistr_pull(cli->inbuf, volume_name, rdata + 18, sizeof(fstring),
- nlen, STR_UNICODE);
+ if (nlen > (rdata_count - 18)) {
+ TALLOC_FREE(rdata);
+ return NT_STATUS_INVALID_NETWORK_RESPONSE;
+ }
+
+ clistr_pull_talloc(mem_ctx,
+ (const char *)rdata,
+ recv_flags2,
+ &volume_name,
+ rdata + 18,
+ nlen, STR_UNICODE);
+ if (volume_name == NULL) {
+ status = map_nt_error_from_unix(errno);
+ TALLOC_FREE(rdata);
+ return status;
+ }
/* todo: but not yet needed
* return the other stuff
*/
+ *_volume_name = volume_name;
TALLOC_FREE(rdata);
return NT_STATUS_OK;
}
diff --git a/source3/libsmb/clirap.c b/source3/libsmb/clirap.c
index e5ff1ab..96003c1 100644
--- a/source3/libsmb/clirap.c
+++ b/source3/libsmb/clirap.c
@@ -1064,23 +1064,44 @@ static bool parse_streams_blob(TALLOC_CTX *mem_ctx,
const uint8_t *rdata,
Send a qfileinfo QUERY_FILE_NAME_INFO call.
****************************************************************************/
-NTSTATUS cli_qfilename(struct cli_state *cli, uint16_t fnum, char *name,
- size_t namelen)
+NTSTATUS cli_qfilename(struct cli_state *cli, uint16_t fnum,
+ TALLOC_CTX *mem_ctx, char **_name)
{
+ uint16_t recv_flags2;
uint8_t *rdata;
uint32_t num_rdata;
NTSTATUS status;
+ char *name = NULL;
+ uint32_t namelen;
status = cli_qfileinfo(talloc_tos(), cli, fnum,
SMB_QUERY_FILE_NAME_INFO,
- 4, cli->max_xmit,
+ 4, cli->max_xmit, &recv_flags2,
&rdata, &num_rdata);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
- clistr_pull((const char *)rdata, name, rdata+4, namelen, IVAL(rdata, 0),
- STR_UNICODE);
+ namelen = IVAL(rdata, 0);
+ if (namelen > (num_rdata - 4)) {
+ TALLOC_FREE(rdata);
+ return NT_STATUS_INVALID_NETWORK_RESPONSE;
+ }
+
+ clistr_pull_talloc(mem_ctx,
+ (const char *)rdata,
+ recv_flags2,
+ &name,
+ rdata + 4,
+ namelen,
+ STR_UNICODE);
+ if (name == NULL) {
+ status = map_nt_error_from_unix(errno);
+ TALLOC_FREE(rdata);
+ return status;
+ }
+
+ *_name = name;
TALLOC_FREE(rdata);
return NT_STATUS_OK;
}
@@ -1110,6 +1131,7 @@ NTSTATUS cli_qfileinfo_basic(struct cli_state *cli,
uint16_t fnum,
status = cli_qfileinfo(talloc_tos(), cli, fnum,
SMB_QUERY_FILE_ALL_INFO,
68, MIN(cli->max_xmit, 0xffff),
+ NULL,
&rdata, &num_rdata);
if (!NT_STATUS_IS_OK(status)) {
return status;
diff --git a/source3/libsmb/clirap.h b/source3/libsmb/clirap.h
index 26265de..de770db 100644
--- a/source3/libsmb/clirap.h
+++ b/source3/libsmb/clirap.h
@@ -94,8 +94,8 @@ NTSTATUS cli_qpathinfo_streams(struct cli_state *cli, const
char *fname,
TALLOC_CTX *mem_ctx,
unsigned int *pnum_streams,
struct stream_struct **pstreams);
-NTSTATUS cli_qfilename(struct cli_state *cli, uint16_t fnum, char *name,
- size_t namelen);
+NTSTATUS cli_qfilename(struct cli_state *cli, uint16_t fnum,
+ TALLOC_CTX *mem_ctx, char **name);
NTSTATUS cli_qfileinfo_basic(struct cli_state *cli, uint16_t fnum,
uint16 *mode, SMB_OFF_T *size,
struct timespec *create_time,
@@ -130,10 +130,11 @@ struct tevent_req *cli_qfileinfo_send(TALLOC_CTX *mem_ctx,
uint16_t level, uint32_t min_rdata,
uint32_t max_rdata);
NTSTATUS cli_qfileinfo_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
+ uint16_t *recv_flags2,
uint8_t **rdata, uint32_t *num_rdata);
NTSTATUS cli_qfileinfo(TALLOC_CTX *mem_ctx, struct cli_state *cli,
uint16_t fnum, uint16_t level, uint32_t min_rdata,
- uint32_t max_rdata,
+ uint32_t max_rdata, uint16_t *recv_flags2,
uint8_t **rdata, uint32_t *num_rdata);
struct tevent_req *cli_flush_send(TALLOC_CTX *mem_ctx,
diff --git a/source3/libsmb/proto.h b/source3/libsmb/proto.h
index 89f5857..1919b08 100644
--- a/source3/libsmb/proto.h
+++ b/source3/libsmb/proto.h
@@ -611,7 +611,8 @@ struct tevent_req *cli_get_fs_attr_info_send(TALLOC_CTX
*mem_ctx,
struct cli_state *cli);
NTSTATUS cli_get_fs_attr_info_recv(struct tevent_req *req, uint32_t *fs_attr);
NTSTATUS cli_get_fs_attr_info(struct cli_state *cli, uint32_t *fs_attr);
-NTSTATUS cli_get_fs_volume_info(struct cli_state *cli, fstring volume_name,
+NTSTATUS cli_get_fs_volume_info(struct cli_state *cli,
+ TALLOC_CTX *mem_ctx, char **volume_name,
uint32 *pserial_number, time_t *pdate);
NTSTATUS cli_get_fs_full_size_info(struct cli_state *cli,
uint64_t *total_allocation_units,
diff --git a/source3/torture/torture.c b/source3/torture/torture.c
index faa4326..7e2a5e7 100644
--- a/source3/torture/torture.c
+++ b/source3/torture/torture.c
@@ -3096,7 +3096,7 @@ static bool run_trans2test(int dummy)
const char *fname = "\\trans2.tst";
const char *dname = "\\trans2";
const char *fname2 = "\\trans2\\trans2.tst";
- char pname[1024];
+ char *pname;
bool correct = True;
NTSTATUS status;
uint32_t fs_attr;
@@ -3123,7 +3123,7 @@ static bool run_trans2test(int dummy)
correct = False;
}
- status = cli_qfilename(cli, fnum, pname, sizeof(pname));
+ status = cli_qfilename(cli, fnum, talloc_tos(), &pname);
if (!NT_STATUS_IS_OK(status)) {
printf("ERROR: qfilename failed (%s)\n", nt_errstr(status));
correct = False;
@@ -3246,7 +3246,7 @@ static NTSTATUS new_trans(struct cli_state *pcli, int
fnum, int level)
NTSTATUS status;
status = cli_qfileinfo(talloc_tos(), pcli, fnum, level, 0,
- pcli->max_xmit, &buf, &len);
+ pcli->max_xmit, NULL, &buf, &len);
if (!NT_STATUS_IS_OK(status)) {
printf("ERROR: qfileinfo (%d) failed (%s)\n", level,
nt_errstr(status));
diff --git a/source4/torture/smb2/lock.c b/source4/torture/smb2/lock.c
index fe82813..3483126 100644
--- a/source4/torture/smb2/lock.c
+++ b/source4/torture/smb2/lock.c
@@ -2608,8 +2608,8 @@ done:
return ret;
}
-static NTSTATUS smb2cli_lock(struct smb2_tree *tree, struct smb2_handle h,
- uint64_t offset, uint64_t length, bool exclusive)
+static NTSTATUS test_smb2_lock(struct smb2_tree *tree, struct smb2_handle h,
+ uint64_t offset, uint64_t length, bool exclusive)
{
struct smb2_lock lck;
struct smb2_lock_element el[1];
@@ -2632,8 +2632,8 @@ static NTSTATUS smb2cli_lock(struct smb2_tree *tree,
struct smb2_handle h,
return status;
}
-static NTSTATUS smb2cli_unlock(struct smb2_tree *tree, struct smb2_handle h,
- uint64_t offset, uint64_t length)
+static NTSTATUS test_smb2_unlock(struct smb2_tree *tree, struct smb2_handle h,
+ uint64_t offset, uint64_t length)
{
struct smb2_lock lck;
struct smb2_lock_element el[1];
@@ -2693,45 +2693,45 @@ static bool test_overlap(struct torture_context
*torture,
torture_comment(torture, "Testing overlapping locks:\n");
- ret = NT_STATUS_IS_OK(smb2cli_lock(tree, h, 0, 4, true)) &&
- NT_STATUS_IS_OK(smb2cli_lock(tree, h, 2, 4, true));
+ ret = NT_STATUS_IS_OK(test_smb2_lock(tree, h, 0, 4, true)) &&
+ NT_STATUS_IS_OK(test_smb2_lock(tree, h, 2, 4, true));
EXPECTED(ret, false);
torture_comment(torture, "the same session/handle %s set overlapping "
"exclusive locks\n", ret?"can":"cannot");
- ret = NT_STATUS_IS_OK(smb2cli_lock(tree, h, 10, 4, false)) &&
- NT_STATUS_IS_OK(smb2cli_lock(tree, h, 12, 4, false));
+ ret = NT_STATUS_IS_OK(test_smb2_lock(tree, h, 10, 4, false)) &&
+ NT_STATUS_IS_OK(test_smb2_lock(tree, h, 12, 4, false));
EXPECTED(ret, true);
torture_comment(torture, "the same session/handle %s set overlapping "
"shared locks\n", ret?"can":"cannot");
- ret = NT_STATUS_IS_OK(smb2cli_lock(tree, h, 20, 4, true)) &&
- NT_STATUS_IS_OK(smb2cli_lock(tree2, h3, 22, 4, true));
+ ret = NT_STATUS_IS_OK(test_smb2_lock(tree, h, 20, 4, true)) &&
+ NT_STATUS_IS_OK(test_smb2_lock(tree2, h3, 22, 4, true));
EXPECTED(ret, false);
torture_comment(torture, "a different session %s set overlapping "
"exclusive locks\n", ret?"can":"cannot");
- ret = NT_STATUS_IS_OK(smb2cli_lock(tree, h, 30, 4, false)) &&
- NT_STATUS_IS_OK(smb2cli_lock(tree2, h3, 32, 4, false));
+ ret = NT_STATUS_IS_OK(test_smb2_lock(tree, h, 30, 4, false)) &&
+ NT_STATUS_IS_OK(test_smb2_lock(tree2, h3, 32, 4, false));
EXPECTED(ret, true);
torture_comment(torture, "a different session %s set overlapping "
"shared locks\n", ret?"can":"cannot");
- ret = NT_STATUS_IS_OK(smb2cli_lock(tree, h, 40, 4, true)) &&
- NT_STATUS_IS_OK(smb2cli_lock(tree, h2, 42, 4, true));
+ ret = NT_STATUS_IS_OK(test_smb2_lock(tree, h, 40, 4, true)) &&
+ NT_STATUS_IS_OK(test_smb2_lock(tree, h2, 42, 4, true));
EXPECTED(ret, false);
torture_comment(torture, "a different handle %s set overlapping "
"exclusive locks\n", ret?"can":"cannot");
- ret = NT_STATUS_IS_OK(smb2cli_lock(tree, h, 50, 4, false)) &&
- NT_STATUS_IS_OK(smb2cli_lock(tree, h2, 52, 4, false));
+ ret = NT_STATUS_IS_OK(test_smb2_lock(tree, h, 50, 4, false)) &&
+ NT_STATUS_IS_OK(test_smb2_lock(tree, h2, 52, 4, false));
EXPECTED(ret, true);
torture_comment(torture, "a different handle %s set overlapping "
"shared locks\n", ret?"can":"cannot");
- ret = NT_STATUS_IS_OK(smb2cli_lock(tree, h, 110, 4, false)) &&
- NT_STATUS_IS_OK(smb2cli_lock(tree, h, 112, 4, false)) &&
- NT_STATUS_IS_OK(smb2cli_unlock(tree, h, 110, 6));
+ ret = NT_STATUS_IS_OK(test_smb2_lock(tree, h, 110, 4, false)) &&
+ NT_STATUS_IS_OK(test_smb2_lock(tree, h, 112, 4, false)) &&
+ NT_STATUS_IS_OK(test_smb2_unlock(tree, h, 110, 6));
EXPECTED(ret, false);
torture_comment(torture, "the same handle %s coalesce read locks\n",
ret?"can":"cannot");
@@ -2742,11 +2742,11 @@ static bool test_overlap(struct torture_context
*torture,
CHECK_STATUS(status, NT_STATUS_OK);
status = torture_smb2_testfile(tree, fname, &h2);
CHECK_STATUS(status, NT_STATUS_OK);
- ret = NT_STATUS_IS_OK(smb2cli_lock(tree, h, 0, 8, false)) &&
- NT_STATUS_IS_OK(smb2cli_lock(tree, h2, 0, 1, false)) &&
+ ret = NT_STATUS_IS_OK(test_smb2_lock(tree, h, 0, 8, false)) &&
+ NT_STATUS_IS_OK(test_smb2_lock(tree, h2, 0, 1, false)) &&
NT_STATUS_IS_OK(smb2_util_close(tree, h)) &&
NT_STATUS_IS_OK(torture_smb2_testfile(tree, fname, &h)) &&
- NT_STATUS_IS_OK(smb2cli_lock(tree, h, 7, 1, true));
+ NT_STATUS_IS_OK(test_smb2_lock(tree, h, 7, 1, true));
EXPECTED(ret, true);
torture_comment(torture, "the server %s have the NT byte range lock "
"bug\n", !ret?"does":"doesn't");
--
Samba Shared Repository