The branch, master has been updated via 3ddb77f torture: Split the fsinfo check into a separate test via e1edffc torture: Split the buffercheck into a separate test via 8f96d48 torture: Change smb2.getinfo into a suite via ad8a1e2 libsmb2: Fix opening the rootdirectory, part 2 via 1927676 libsmb2: Fix opening the rootdirectory, part 1 via 971b39b torture: Remove an unused variable via 83d1495 smbd: Fix a debug message from 573b455 pkgconfig: Do not hardcode library version numbers in pc files.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 3ddb77f7d8d56376661c9ad26acbb32dc7e6e40d Author: Volker Lendecke <v...@samba.org> Date: Thu Aug 22 11:47:21 2013 +0000 torture: Split the fsinfo check into a separate test Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Fri Aug 23 20:53:12 CEST 2013 on sn-devel-104 commit e1edffc8075cc0f83e0f05153712298a96063fba Author: Volker Lendecke <v...@samba.org> Date: Thu Aug 22 11:23:22 2013 +0000 torture: Split the buffercheck into a separate test Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 8f96d489715d88c181d88030550a88a7e245e5ae Author: Volker Lendecke <v...@samba.org> Date: Thu Aug 22 11:06:59 2013 +0000 torture: Change smb2.getinfo into a suite Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit ad8a1e2a6ee126596abe992bc39da3b8ea1b4f9b Author: Volker Lendecke <v...@samba.org> Date: Thu Aug 22 15:04:03 2013 +0000 libsmb2: Fix opening the rootdirectory, part 2 smb2_push_o16s16_blob is wrong for the blob.data==NULL case. It does not do the same magic that the rest of the routine does with regards to padding_fix. padding_fix is wrong in its own respect, with a 0-length blob we end up with a negative padding fix. It's wrong, but it seems to work. Why am I doing this? I want to make smb2.getinfo work against w2k12. smb2_util_roothandle() always gives NT_STATUS_INVALID_PARAMETER without this and the preceding fix. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 1927676412a5b329b9f6e5e3ec3971bc18e21b31 Author: Volker Lendecke <v...@samba.org> Date: Thu Aug 22 15:04:03 2013 +0000 libsmb2: Fix opening the rootdirectory, part 1 [MS-SMB2], 2.2.13 says: In the request, the Buffer field MUST be at least one byte in length. Implement that for the 0-length filename without create blobs. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 971b39bb103410444cfdeaa6e9684c7496a39ab3 Author: Volker Lendecke <v...@samba.org> Date: Thu Aug 22 11:19:33 2013 +0000 torture: Remove an unused variable Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 83d1495e587d12211587856bce0f583d188b3e81 Author: Volker Lendecke <v...@samba.org> Date: Thu Aug 22 15:19:32 2013 +0000 smbd: Fix a debug message Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> ----------------------------------------------------------------------- Summary of changes: selftest/knownfail | 5 +++-- source3/smbd/trans2.c | 2 +- source4/libcli/smb2/create.c | 15 +++++++++++++++ source4/torture/smb2/getinfo.c | 35 +++++++++++++++++++++++++++-------- source4/torture/smb2/smb2.c | 2 +- source4/torture/smb2/util.c | 2 +- 6 files changed, 48 insertions(+), 13 deletions(-) Changeset truncated at 500 lines: diff --git a/selftest/knownfail b/selftest/knownfail index c075ba6..dd536df 100644 --- a/selftest/knownfail +++ b/selftest/knownfail @@ -170,7 +170,7 @@ ^samba4.smb2.oplock.batch10\(.*\)$ # samba 4 oplocks are a mess ^samba4.smb2.oplock.batch20\(.*\)$ # samba 4 oplocks are a mess ^samba4.smb2.oplock.stream1 # samba 4 oplocks are a mess -^samba4.smb2.getinfo.getinfo # streams on directories does not work +^samba4.smb2.getinfo.complex # streams on directories does not work ^samba4.ntvfs.cifs.krb5.base.createx_access.createx_access\(.*\)$ ^samba4.rpc.lsa.forest.trust #Not fully provided by Samba4 ^samba4.blackbox.kinit\(.*\).kinit with user password for expired password\(.*\) # We need to work out why this fails only during the pw change @@ -206,7 +206,8 @@ ^samba3.smb2.streams.rename ^samba3.smb2.streams.rename2 ^samba3.smb2.streams.attributes -^samba3.smb2.getinfo.getinfo +^samba3.smb2.getinfo.complex +^samba3.smb2.getinfo.fsinfo # quotas don't work yet ^samba3.smb2.setinfo.setinfo ^samba3.smb2.session.*reauth5 # some special anonymous checks? ^samba3.smb2.compound.interim2 # wrong return code (STATUS_CANCELLED) diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index 81f80c3..e7c0da1 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -3374,7 +3374,7 @@ cBytesSector=%u, cUnitTotal=%u, cUnitAvail=%d\n", (unsigned int)bsize, (unsigned /* access check */ if (get_current_uid(conn) != 0) { - DEBUG(0,("set_user_quota: access_denied " + DEBUG(0,("get_user_quota: access_denied " "service [%s] user [%s]\n", lp_servicename(talloc_tos(), SNUM(conn)), conn->session_info->unix_info->unix_name)); diff --git a/source4/libcli/smb2/create.c b/source4/libcli/smb2/create.c index 1a7f02b..10fe4f7 100644 --- a/source4/libcli/smb2/create.c +++ b/source4/libcli/smb2/create.c @@ -294,6 +294,21 @@ struct smb2_request *smb2_create_send(struct smb2_tree *tree, struct smb2_create return NULL; } + if (((io->in.fname == NULL) || (strlen(io->in.fname) == 0)) && + (blob.length == 0)) { + struct smb2_request_buffer *buf = &req->out; + + status = smb2_grow_buffer(buf, 1); + if (!NT_STATUS_IS_OK(status)) { + talloc_free(req); + return NULL; + } + buf->dynamic[0] = 0; + buf->dynamic += 1; + buf->body_size += 1; + buf->size += 1; + } + data_blob_free(&blob); smb2_transport_send(req); diff --git a/source4/torture/smb2/getinfo.c b/source4/torture/smb2/getinfo.c index 16db715..10dd550 100644 --- a/source4/torture/smb2/getinfo.c +++ b/source4/torture/smb2/getinfo.c @@ -127,13 +127,19 @@ static bool torture_smb2_fileinfo(struct torture_context *tctx, struct smb2_tree /* test fsinfo levels */ -static bool torture_smb2_fsinfo(struct torture_context *tctx, struct smb2_tree *tree) +static bool torture_smb2_fsinfo(struct torture_context *tctx) { + bool ret; + struct smb2_tree *tree; int i; NTSTATUS status; struct smb2_handle handle; printf("Testing fsinfo levels\n"); + + ret = torture_smb2_connection(tctx, &tree); + torture_assert(tctx, ret, "connection failed"); + status = smb2_util_roothandle(tree, &handle); torture_assert_ntstatus_ok(tctx, status, "Unable to create root handle"); @@ -152,13 +158,19 @@ static bool torture_smb2_fsinfo(struct torture_context *tctx, struct smb2_tree * /* test for buffer size handling */ -static bool torture_smb2_buffercheck(struct torture_context *tctx, struct smb2_tree *tree) +static bool torture_smb2_buffercheck(struct torture_context *tctx) { + bool ret; + struct smb2_tree *tree; NTSTATUS status; struct smb2_handle handle; struct smb2_getinfo b; printf("Testing buffer size handling\n"); + + ret = torture_smb2_connection(tctx, &tree); + torture_assert(tctx, ret, "connection failed"); + status = smb2_util_roothandle(tree, &handle); torture_assert_ntstatus_ok(tctx, status, "Unable to create root handle"); @@ -179,9 +191,8 @@ static bool torture_smb2_buffercheck(struct torture_context *tctx, struct smb2_t /* basic testing of all SMB2 getinfo levels */ -bool torture_smb2_getinfo(struct torture_context *torture) +static bool torture_smb2_getinfo(struct torture_context *torture) { - TALLOC_CTX *mem_ctx = talloc_new(NULL); struct smb2_tree *tree; bool ret = true; NTSTATUS status; @@ -209,10 +220,18 @@ bool torture_smb2_getinfo(struct torture_context *torture) "setup complex dir " DNAME ":streamtwo"); ret &= torture_smb2_fileinfo(torture, tree); - ret &= torture_smb2_fsinfo(torture, tree); - ret &= torture_smb2_buffercheck(torture, tree); - - talloc_free(mem_ctx); return ret; } + +struct torture_suite *torture_smb2_getinfo_init(void) +{ + struct torture_suite *suite = torture_suite_create( + talloc_autofree_context(), "getinfo"); + + torture_suite_add_simple_test(suite, "complex", torture_smb2_getinfo); + torture_suite_add_simple_test(suite, "fsinfo", torture_smb2_fsinfo); + torture_suite_add_simple_test(suite, "buffercheck", + torture_smb2_buffercheck); + return suite; +} diff --git a/source4/torture/smb2/smb2.c b/source4/torture/smb2/smb2.c index f6a3163..19d7e4a 100644 --- a/source4/torture/smb2/smb2.c +++ b/source4/torture/smb2/smb2.c @@ -148,7 +148,7 @@ NTSTATUS torture_smb2_init(void) struct torture_suite *suite = torture_suite_create(talloc_autofree_context(), "smb2"); torture_suite_add_simple_test(suite, "connect", torture_smb2_connect); torture_suite_add_suite(suite, torture_smb2_scan_init()); - torture_suite_add_simple_test(suite, "getinfo", torture_smb2_getinfo); + torture_suite_add_suite(suite, torture_smb2_getinfo_init()); torture_suite_add_simple_test(suite, "setinfo", torture_smb2_setinfo); torture_suite_add_suite(suite, torture_smb2_lock_init()); torture_suite_add_suite(suite, torture_smb2_read_init()); diff --git a/source4/torture/smb2/util.c b/source4/torture/smb2/util.c index cb9a527..4ffcfea 100644 --- a/source4/torture/smb2/util.c +++ b/source4/torture/smb2/util.c @@ -485,7 +485,7 @@ NTSTATUS smb2_util_roothandle(struct smb2_tree *tree, struct smb2_handle *handle io.in.create_disposition = NTCREATEX_DISP_OPEN; io.in.share_access = NTCREATEX_SHARE_ACCESS_READ|NTCREATEX_SHARE_ACCESS_DELETE; io.in.create_options = NTCREATEX_OPTIONS_ASYNC_ALERT; - io.in.fname = NULL; + io.in.fname = ""; status = smb2_create(tree, tree, &io); NT_STATUS_NOT_OK_RETURN(status); -- Samba Shared Repository