[SCM] Samba Shared Repository - branch master updated

Günther Deschner gd at samba.org
Thu Mar 17 19:12:01 MDT 2011


The branch, master has been updated
       via  de5cec4 s4-smbtorture: add netsessiongetinfo() test.
       via  26ddcd3 s4-smbtorture: add missing error code check in test_netsessionenum().
       via  436b497 s4-libcli/rap: add smbcli_rap_netsessiongetinfo().
       via  f87a072 rap: add rap_NetSessionGetInfo to IDL.
       via  9ef1a8c s4-smbtorture: add test for rap_NetUserDelete().
       via  5def6f0 s3-net: make sure we set correct default user flags in rap_user_add().
       via  249340c s4-smbtorture: add test for rap_NetUserAdd().
       via  980ceb2 s4-libcli/rap: add smbcli_rap_netuserdelete().
       via  9b1f2df rap: add rap_NetUserDelete IDL.
       via  f91bc89 s4-libcli/rap: add smbcli_rap_netuseradd().
       via  dd5460c rap: add rap_NetUserAdd IDL.
       via  40398ac s4-smbtorture: use torture_assert_ and comment functions in raw.eas test.
       via  4a48c9d s4-smbtorture: use torture_context in raw.eas test.
       via  ac85193 s4-smbtorture: remove trailing whitespace from raw.eas test.
       via  faf8bec s3-utils: run minimal_includes.pl over utils/*.c
      from  066fecd The searches struct is still being used and idled in SMB2 - move it to the global section until we decide if we want to idle SMB2 directory handles.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit de5cec48a4660eb6b4dd4138e3aff11a4ed57cdc
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 18 01:23:53 2011 +0100

    s4-smbtorture: add netsessiongetinfo() test.
    
    Guenther
    
    Autobuild-User: Günther Deschner <gd at samba.org>
    Autobuild-Date: Fri Mar 18 02:11:38 CET 2011 on sn-devel-104

commit 26ddcd3da1aa7903a08accea4e9d1ffaac1cae0a
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 18 01:23:29 2011 +0100

    s4-smbtorture: add missing error code check in test_netsessionenum().
    
    Guenther

commit 436b49771460139f1227b15445f68b80b5fbf6e6
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 18 01:22:59 2011 +0100

    s4-libcli/rap: add smbcli_rap_netsessiongetinfo().
    
    Guenther

commit f87a072b95e0eabffedb975d4fd4784300f7ad18
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 18 01:22:35 2011 +0100

    rap: add rap_NetSessionGetInfo to IDL.
    
    Guenther

commit 9ef1a8cf4cc08a9e8e5bda6123ca34edf4f40f4c
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 18 00:12:11 2011 +0100

    s4-smbtorture: add test for rap_NetUserDelete().
    
    Guenther

commit 5def6f0ecad18c5a3896dc27c1972299594188cd
Author: Günther Deschner <gd at samba.org>
Date:   Thu Mar 17 23:51:12 2011 +0100

    s3-net: make sure we set correct default user flags in rap_user_add().
    
    Guenther

commit 249340c9c8f515a9d06d52d67f4d42e6751d1cf9
Author: Günther Deschner <gd at samba.org>
Date:   Thu Mar 17 22:18:43 2011 +0100

    s4-smbtorture: add test for rap_NetUserAdd().
    
    Guenther

commit 980ceb2f708d00c13dd3f50cb00df17f1c593965
Author: Günther Deschner <gd at samba.org>
Date:   Thu Mar 17 22:39:22 2011 +0100

    s4-libcli/rap: add smbcli_rap_netuserdelete().
    
    Guenther

commit 9b1f2df3b1528525c8e895cb1d413d019bbb71d4
Author: Günther Deschner <gd at samba.org>
Date:   Thu Mar 17 22:38:47 2011 +0100

    rap: add rap_NetUserDelete IDL.
    
    Guenther

commit f91bc89a52ea9c21dab4f6f93ac04260874a1622
Author: Günther Deschner <gd at samba.org>
Date:   Thu Mar 17 21:53:19 2011 +0100

    s4-libcli/rap: add smbcli_rap_netuseradd().
    
    Guenther

commit dd5460c2e5f8c074bffdd45314fea506d7dbbc8a
Author: Günther Deschner <gd at samba.org>
Date:   Thu Mar 17 21:52:20 2011 +0100

    rap: add rap_NetUserAdd IDL.
    
    Guenther

commit 40398acf75d5de3c69aaed56eddc1c1cbde5b3ca
Author: Günther Deschner <gd at samba.org>
Date:   Thu Mar 17 21:49:23 2011 +0100

    s4-smbtorture: use torture_assert_ and comment functions in raw.eas test.
    
    Guenther

commit 4a48c9d4ac20eefd8bd73525fa29deacece0873b
Author: Günther Deschner <gd at samba.org>
Date:   Thu Mar 17 21:08:03 2011 +0100

    s4-smbtorture: use torture_context in raw.eas test.
    
    Guenther

commit ac851935e2ca7c7cc27f3202b9104ce1070240f3
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 18 00:36:39 2011 +0100

    s4-smbtorture: remove trailing whitespace from raw.eas test.
    
    Guenther

commit faf8becf22c44c8e4c70bfc4ae84b6081a633641
Author: Günther Deschner <gd at samba.org>
Date:   Thu Mar 17 14:40:38 2011 +0100

    s3-utils: run minimal_includes.pl over utils/*.c
    
    Guenther

-----------------------------------------------------------------------

Summary of changes:
 librpc/idl/rap.idl               |   29 +++++++
 source3/selftest/knownfail       |    3 +
 source3/utils/net_rap.c          |    2 +-
 source3/utils/net_rpc_printer.c  |    1 -
 source3/utils/net_rpc_registry.c |    2 -
 source3/utils/net_rpc_sh_acct.c  |    1 -
 source4/libcli/rap/rap.c         |  164 +++++++++++++++++++++++++++++++++++++-
 source4/selftest/knownfail       |    1 +
 source4/torture/rap/rap.c        |   62 ++++++++++++++
 source4/torture/rap/sam.c        |  116 ++++++++++++++++++++++++++-
 source4/torture/raw/eas.c        |  133 +++++++++++++++----------------
 11 files changed, 439 insertions(+), 75 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/idl/rap.idl b/librpc/idl/rap.idl
index 7e3698a..8087e22 100644
--- a/librpc/idl/rap.idl
+++ b/librpc/idl/rap.idl
@@ -937,6 +937,35 @@ interface rap
 		[out,switch_is(level)] rap_session_info info[count]
 	);
 
+	/* not documented in MS-RAP */
+	[public] void rap_NetSessionGetInfo(
+		[in] astring SessionName,
+		[in] uint16 level,
+		[in] uint16 bufsize,
+		[out] rap_status status,
+		[out] uint16 convert,
+		[out] uint16 available,
+		[out,switch_is(level)] rap_session_info info
+	);
+
+	/* not documented in MS-RAP */
+	[public] void rap_NetUserAdd(
+		[in] uint16 level,
+		[in] uint16 bufsize,
+		[in] uint16 pwdlength,
+		[in] uint16 unknown,
+		[in,switch_is(level)] rap_netuser_info info,
+		[out] rap_status status,
+		[out] uint16 convert
+	);
+
+	/* not documented in MS-RAP */
+	[public] void rap_NetUserDelete(
+		[in] astring UserName,
+		[out] rap_status status,
+		[out] uint16 convert
+	);
+
 	/* Parameter description strings for RAP calls   */
 	/* Names are defined name for RAP call with _REQ */
 	/* appended to end.                              */
diff --git a/source3/selftest/knownfail b/source3/selftest/knownfail
index df2ec9b..95f01f6 100644
--- a/source3/selftest/knownfail
+++ b/source3/selftest/knownfail
@@ -9,3 +9,6 @@ samba3.posix_s3.smb2.lock.*.rw-exclusive # another intermittent failure
 samba3.raw.mux.* #This test is flaky on the async lock time
 samba3.smbtorture_s3.*OPLOCK4 # fails sometimes on sn-devel
 samba3.posix_s3.nbt.dgram.*netlogon2
+samba3.*rap.sam.*.useradd # Not provided by Samba 3
+samba3.*rap.sam.*.userdelete # Not provided by Samba 3
+samba3.*rap.basic.*.netsessiongetinfo # Not provided by Samba 3
diff --git a/source3/utils/net_rap.c b/source3/utils/net_rap.c
index 2cc42c8..afda222 100644
--- a/source3/utils/net_rap.c
+++ b/source3/utils/net_rap.c
@@ -825,7 +825,7 @@ static int rap_user_add(struct net_context *c, int argc, const char **argv)
                 return -1;
 
 	safe_strcpy((char *)userinfo.user_name, argv[0], sizeof(userinfo.user_name)-1);
-	if (c->opt_flags == -1)
+	if (c->opt_flags == 0)
                 c->opt_flags = 0x21;
 
 	userinfo.userflags = c->opt_flags;
diff --git a/source3/utils/net_rpc_printer.c b/source3/utils/net_rpc_printer.c
index 6de0d40..8be4fb1 100644
--- a/source3/utils/net_rpc_printer.c
+++ b/source3/utils/net_rpc_printer.c
@@ -22,7 +22,6 @@
 #include "rpc_client/cli_spoolss.h"
 #include "rpc_client/init_spoolss.h"
 #include "nt_printing.h"
-#include "registry.h"
 #include "registry/reg_objects.h"
 #include "../libcli/security/security.h"
 
diff --git a/source3/utils/net_rpc_registry.c b/source3/utils/net_rpc_registry.c
index de9bbdd..809ec59 100644
--- a/source3/utils/net_rpc_registry.c
+++ b/source3/utils/net_rpc_registry.c
@@ -18,13 +18,11 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
  
 #include "includes.h"
-#include "popt_common.h"
 #include "registry.h"
 #include "utils/net.h"
 #include "utils/net_registry_util.h"
 #include "registry/regfio.h"
 #include "../librpc/gen_ndr/ndr_winreg_c.h"
-#include "registry/reg_objects.h"
 #include "../librpc/gen_ndr/ndr_security.h"
 #include "registry/reg_format.h"
 #include "registry/reg_import.h"
diff --git a/source3/utils/net_rpc_sh_acct.c b/source3/utils/net_rpc_sh_acct.c
index 5305f51..6f5604e 100644
--- a/source3/utils/net_rpc_sh_acct.c
+++ b/source3/utils/net_rpc_sh_acct.c
@@ -17,7 +17,6 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 #include "includes.h"
-#include "popt_common.h"
 #include "utils/net.h"
 #include "../librpc/gen_ndr/ndr_samr_c.h"
 #include "../libcli/security/security.h"
diff --git a/source4/libcli/rap/rap.c b/source4/libcli/rap/rap.c
index 7217ac0..5ea9e81 100644
--- a/source4/libcli/rap/rap.c
+++ b/source4/libcli/rap/rap.c
@@ -4,7 +4,7 @@
    Copyright (C) Volker Lendecke 2004
    Copyright (C) Tim Potter 2005
    Copyright (C) Jelmer Vernooij 2007
-   Copyright (C) Guenther Deschner 2010
+   Copyright (C) Guenther Deschner 2010-2011
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -1471,3 +1471,165 @@ NTSTATUS smbcli_rap_netsessionenum(struct smbcli_tree *tree,
 	talloc_free(call);
 	return result;
 }
+
+NTSTATUS smbcli_rap_netsessiongetinfo(struct smbcli_tree *tree,
+				      TALLOC_CTX *mem_ctx,
+				      struct rap_NetSessionGetInfo *r)
+{
+	struct rap_call *call;
+	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+	if (!(call = new_rap_cli_call(mem_ctx, RAP_WsessionGetInfo))) {
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	rap_cli_push_string(call, r->in.SessionName);
+	rap_cli_push_word(call, r->in.level);
+	rap_cli_push_rcvbuf(call, r->in.bufsize);
+	rap_cli_expect_word(call);
+
+	switch(r->in.level) {
+	case 2:
+		rap_cli_expect_format(call, "zzWWWDDDz");
+		break;
+	default:
+		result = NT_STATUS_INVALID_PARAMETER;
+		break;
+	}
+
+	if (DEBUGLEVEL >= 10) {
+		NDR_PRINT_IN_DEBUG(rap_NetSessionGetInfo, r);
+	}
+
+	result = rap_cli_do_call(tree, call);
+
+	if (!NT_STATUS_IS_OK(result))
+		goto done;
+
+	result = NT_STATUS_INVALID_PARAMETER;
+
+	ZERO_STRUCT(r->out);
+
+	NDR_GOTO(ndr_pull_rap_status(call->ndr_pull_param, NDR_SCALARS, &r->out.status));
+	NDR_GOTO(ndr_pull_uint16(call->ndr_pull_param, NDR_SCALARS, &r->out.convert));
+	NDR_GOTO(ndr_pull_uint16(call->ndr_pull_param, NDR_SCALARS, &r->out.available));
+
+	if (r->out.status == 0 && r->out.available) {
+		call->ndr_pull_data->relative_rap_convert = r->out.convert;
+
+		NDR_GOTO(ndr_pull_set_switch_value(call->ndr_pull_data, &r->out.info, r->in.level));
+		NDR_GOTO(ndr_pull_rap_session_info(call->ndr_pull_data, NDR_SCALARS|NDR_BUFFERS, &r->out.info));
+	}
+
+	if (DEBUGLEVEL >= 10) {
+		NDR_PRINT_OUT_DEBUG(rap_NetSessionGetInfo, r);
+	}
+
+	result = NT_STATUS_OK;
+ done:
+	talloc_free(call);
+	return result;
+}
+
+
+NTSTATUS smbcli_rap_netuseradd(struct smbcli_tree *tree,
+			       TALLOC_CTX *mem_ctx,
+			       struct rap_NetUserAdd *r)
+{
+	struct rap_call *call;
+	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+	if (!(call = new_rap_cli_call(mem_ctx, RAP_WUserAdd2))) {
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	rap_cli_push_word(call, r->in.level);
+	rap_cli_push_sendbuf(call, r->in.bufsize);
+	rap_cli_push_word(call, r->in.pwdlength);
+	rap_cli_push_word(call, r->in.unknown);
+
+	switch (r->in.level) {
+	case 1:
+		rap_cli_expect_format(call, "B21BB16DWzzWz");
+		break;
+	default:
+		result = NT_STATUS_INVALID_PARAMETER;
+		break;
+	}
+
+	if (DEBUGLEVEL >= 10) {
+		NDR_PRINT_IN_DEBUG(rap_NetUserAdd, r);
+	}
+
+	NDR_GOTO(ndr_push_set_switch_value(call->ndr_push_data, &r->in.info, r->in.level));
+	NDR_GOTO(ndr_push_rap_netuser_info(call->ndr_push_data, NDR_SCALARS|NDR_BUFFERS, &r->in.info));
+
+	result = rap_cli_do_call(tree, call);
+
+	if (!NT_STATUS_IS_OK(result))
+		goto done;
+
+	result = NT_STATUS_INVALID_PARAMETER;
+
+	NDR_GOTO(ndr_pull_rap_status(call->ndr_pull_param, NDR_SCALARS, &r->out.status));
+	NDR_GOTO(ndr_pull_uint16(call->ndr_pull_param, NDR_SCALARS, &r->out.convert));
+
+	result = NT_STATUS_OK;
+
+	if (!NT_STATUS_IS_OK(result)) {
+		goto done;
+	}
+
+	if (DEBUGLEVEL >= 10) {
+		NDR_PRINT_OUT_DEBUG(rap_NetUserAdd, r);
+	}
+
+ done:
+	talloc_free(call);
+	return result;
+}
+
+NTSTATUS smbcli_rap_netuserdelete(struct smbcli_tree *tree,
+				  TALLOC_CTX *mem_ctx,
+				  struct rap_NetUserDelete *r)
+{
+	struct rap_call *call;
+	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
+
+	if (!(call = new_rap_cli_call(mem_ctx, RAP_WUserDel))) {
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	rap_cli_push_string(call, r->in.UserName);
+
+	rap_cli_expect_format(call, "");
+	rap_cli_expect_extra_format(call, "");
+
+	if (DEBUGLEVEL >= 10) {
+		NDR_PRINT_IN_DEBUG(rap_NetUserDelete, r);
+	}
+
+	result = rap_cli_do_call(tree, call);
+
+	if (!NT_STATUS_IS_OK(result))
+		goto done;
+
+	result = NT_STATUS_INVALID_PARAMETER;
+
+	NDR_GOTO(ndr_pull_rap_status(call->ndr_pull_param, NDR_SCALARS, &r->out.status));
+	NDR_GOTO(ndr_pull_uint16(call->ndr_pull_param, NDR_SCALARS, &r->out.convert));
+
+	result = NT_STATUS_OK;
+
+	if (!NT_STATUS_IS_OK(result)) {
+		goto done;
+	}
+
+	if (DEBUGLEVEL >= 10) {
+		NDR_PRINT_OUT_DEBUG(rap_NetUserDelete, r);
+	}
+
+ done:
+	talloc_free(call);
+	return result;
+}
diff --git a/source4/selftest/knownfail b/source4/selftest/knownfail
index a9cc444..cdd7a2d 100644
--- a/source4/selftest/knownfail
+++ b/source4/selftest/knownfail
@@ -40,6 +40,7 @@ samba4.base.charset.*.Testing partial surrogate
 .*net.api.delshare.*				# DelShare isn't implemented yet
 samba4.rap.*netservergetinfo
 samba4.rap.*netsessionenum
+samba4.rap.*netsessiongetinfo
 samba4.smb2.persistent.handles1
 samba4.winbind.struct.*.show_sequence     # Not yet working in winbind
 samba4.winbind.struct.*.getpwent          # Not yet working in winbind
diff --git a/source4/torture/rap/rap.c b/source4/torture/rap/rap.c
index 6f5d6e6..5c1c5e1 100644
--- a/source4/torture/rap/rap.c
+++ b/source4/torture/rap/rap.c
@@ -123,6 +123,8 @@ static bool test_netsessionenum(struct torture_context *tctx,
 		torture_assert_ntstatus_ok(tctx,
 			smbcli_rap_netsessionenum(cli->tree, tctx, &r),
 			"smbcli_rap_netsessionenum failed");
+		torture_assert_werr_ok(tctx, W_ERROR(r.out.status),
+			"smbcli_rap_netsessionenum failed");
 
 		for (n=0; n < r.out.count; n++) {
 			switch (r.in.level) {
@@ -147,6 +149,64 @@ static bool test_netsessionenum(struct torture_context *tctx,
 	return true;
 }
 
+static bool test_netsessiongetinfo_bysession(struct torture_context *tctx,
+					     struct smbcli_state *cli,
+					     const char *session)
+{
+	struct rap_NetSessionGetInfo r;
+	int i;
+	uint16_t levels[] = { 2 };
+
+	if (session && session[0] == '\\' && session[1] == '\\') {
+		r.in.SessionName = session;
+	} else {
+		r.in.SessionName = talloc_asprintf(tctx, "\\\\%s", session);
+	}
+	r.in.bufsize = 0xffff;
+
+	for (i=0; i < ARRAY_SIZE(levels); i++) {
+
+		r.in.level = levels[i];
+
+		torture_assert_ntstatus_ok(tctx,
+			smbcli_rap_netsessiongetinfo(cli->tree, tctx, &r),
+			"rap_netsessiongetinfo failed");
+		torture_assert_werr_ok(tctx, W_ERROR(r.out.status),
+			"rap_netsessiongetinfo failed");
+	}
+
+	return true;
+}
+
+static bool test_netsessiongetinfo(struct torture_context *tctx,
+				   struct smbcli_state *cli)
+{
+	struct rap_NetSessionEnum r;
+	int i,n;
+	uint16_t levels[] = { 2 };
+
+	for (i=0; i < ARRAY_SIZE(levels); i++) {
+
+		r.in.level = levels[i];
+		r.in.bufsize = 8192;
+
+		torture_assert_ntstatus_ok(tctx,
+			smbcli_rap_netsessionenum(cli->tree, tctx, &r),
+			"smbcli_rap_netsessionenum failed");
+		torture_assert_werr_ok(tctx, W_ERROR(r.out.status),
+			"smbcli_rap_netsessionenum failed");
+
+		for (n=0; n < r.out.count; n++) {
+			torture_assert(tctx,
+				test_netsessiongetinfo_bysession(tctx, cli, r.out.info[n].info2.ComputerName),
+				"failed to query sessioninfo");
+		}
+	}
+
+	return true;
+}
+
+
 bool torture_rap_scan(struct torture_context *torture, struct smbcli_state *cli)
 {
 	int callno;
@@ -184,6 +244,8 @@ NTSTATUS torture_rap_init(void)
 				    test_netservergetinfo);
 	torture_suite_add_1smb_test(suite_basic, "netsessionenum",
 				    test_netsessionenum);
+	torture_suite_add_1smb_test(suite_basic, "netsessiongetinfo",
+				    test_netsessiongetinfo);
 
 	torture_suite_add_1smb_test(suite, "scan", torture_rap_scan);
 
diff --git a/source4/torture/rap/sam.c b/source4/torture/rap/sam.c
index 6aca158..8ac53a4 100644
--- a/source4/torture/rap/sam.c
+++ b/source4/torture/rap/sam.c
@@ -2,7 +2,7 @@
    Unix SMB/CIFS implementation.
    test suite for RAP sam operations
 
-   Copyright (C) Guenther Deschner 2010
+   Copyright (C) Guenther Deschner 2010-2011
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -235,6 +235,118 @@ static bool test_usergetinfo(struct torture_context *tctx,
 	return ret;
 }
 
+static bool test_useradd(struct torture_context *tctx,
+			 struct smbcli_state *cli)
+{
+
+	struct rap_NetUserAdd r;
+	struct rap_NetUserInfo1 info1;
+	int i;
+	uint16_t levels[] = { 1 };
+	const char *username = TEST_RAP_USER;
+
+	for (i=0; i < ARRAY_SIZE(levels); i++) {
+
+		const char *pwd;
+
+		pwd = generate_random_password(tctx, 9, 16);
+
+		r.in.level = levels[i];
+		r.in.bufsize = 0xffff;
+		r.in.pwdlength = strlen(pwd);
+		r.in.unknown = 0;
+
+		switch (r.in.level) {
+		case 1:
+			ZERO_STRUCT(info1);
+
+			info1.Name = username;
+			memcpy(info1.Password, pwd, MIN(strlen(pwd), 16));
+			info1.Priv = USER_PRIV_USER;
+			info1.Flags = 0x21;
+			info1.HomeDir = "home_dir";
+			info1.Comment = "comment";
+			info1.ScriptPath = "logon_script";
+
+			r.in.info.info1 = info1;
+			break;
+		}
+
+		torture_comment(tctx,
+			"Testing rap_NetUserAdd(%s) level %d\n", username, r.in.level);
+
+		torture_assert_ntstatus_ok(tctx,
+			smbcli_rap_netuseradd(cli->tree, tctx, &r),
+			"smbcli_rap_netuseradd failed");
+		torture_assert_werr_ok(tctx, W_ERROR(r.out.status),
+			"smbcli_rap_netuseradd failed");
+
+		torture_assert_ntstatus_ok(tctx,
+			smbcli_rap_netuseradd(cli->tree, tctx, &r),
+			"2nd smbcli_rap_netuseradd failed");
+		torture_assert_werr_equal(tctx, W_ERROR(r.out.status), WERR_USEREXISTS,
+			"2nd smbcli_rap_netuseradd failed");
+
+		{
+			struct rap_NetUserDelete d;
+
+			d.in.UserName = username;
+
+			smbcli_rap_netuserdelete(cli->tree, tctx, &d);
+		}
+	}
+
+	return true;
+}
+
+static bool test_userdelete(struct torture_context *tctx,
+			    struct smbcli_state *cli)
+{
+
+	struct rap_NetUserDelete r;
+
+	{
+		struct rap_NetUserAdd a;
+		const char *pwd;
+
+		ZERO_STRUCT(a.in.info.info1);
+
+		pwd = generate_random_password(tctx, 9, 16);
+
+		a.in.level = 1;
+		a.in.bufsize = 0xffff;
+		a.in.pwdlength = strlen(pwd);
+		a.in.unknown = 0;
+		a.in.info.info1.Name = TEST_RAP_USER;
+		a.in.info.info1.Priv = USER_PRIV_USER;
+
+		memcpy(a.in.info.info1.Password, pwd, MIN(strlen(pwd), 16));
+
+		torture_assert_ntstatus_ok(tctx,
+			smbcli_rap_netuseradd(cli->tree, tctx, &a),
+			"smbcli_rap_netuseradd failed");
+	}
+
+	r.in.UserName = TEST_RAP_USER;
+
+	torture_comment(tctx,
+		"Testing rap_NetUserDelete(%s)\n", r.in.UserName);
+
+	torture_assert_ntstatus_ok(tctx,
+		smbcli_rap_netuserdelete(cli->tree, tctx, &r),


-- 
Samba Shared Repository


More information about the samba-cvs mailing list