Author: gd Date: 2007-11-27 09:41:50 +0000 (Tue, 27 Nov 2007) New Revision: 26143
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=26143 Log: Add IDL and torture test for wkssvc_NetrWkstaUserGetInfo. Guenther Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c branches/SAMBA_4_0/source/torture/rpc/wkssvc.c Changeset: Modified: branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl =================================================================== --- branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 09:35:10 UTC (rev 26142) +++ branches/SAMBA_4_0/source/librpc/idl/wkssvc.idl 2007-11-27 09:41:50 UTC (rev 26143) @@ -192,8 +192,23 @@ /*****************************/ /* Function 0x03 */ - WERROR WKSSVC_NETRWKSTAUSERGETINFO (); + typedef struct { + [string,charset(UTF16)] uint16 *other_domains; + } wkssvc_NetrWkstaUserInfo1101; + typedef [switch_type(uint32)] union { + [case(0)] wkssvc_NetrWkstaUserInfo0 *info0; + [case(1)] wkssvc_NetrWkstaUserInfo1 *info1; + [case(1101)] wkssvc_NetrWkstaUserInfo1101 *info1101; + } wkssvc_NetrWkstaUserInfo; + + WERROR wkssvc_NetrWkstaUserGetInfo( + [in] [string,charset(UTF16)] uint16 *unknown, + [in] uint32 level, + [out] [switch_is(level)] [ref] wkssvc_NetrWkstaUserInfo *info + ); + + /*****************************/ /* Function 0x04 */ WERROR WKSSVC_NETRWKSTAUSERSETINFO (); Modified: branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c =================================================================== --- branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 09:35:10 UTC (rev 26142) +++ branches/SAMBA_4_0/source/rpc_server/wkssvc/dcesrv_wkssvc.c 2007-11-27 09:41:50 UTC (rev 26143) @@ -112,11 +112,11 @@ } -/* - WKSSVC_NETRWKSTAUSERGETINFO +/* + wkssvc_NetrWkstaUserGetInfo */ -static WERROR dcesrv_WKSSVC_NETRWKSTAUSERGETINFO(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, - struct WKSSVC_NETRWKSTAUSERGETINFO *r) +static WERROR dcesrv_wkssvc_NetrWkstaUserGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, + struct wkssvc_NetrWkstaUserGetInfo *r) { DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); } Modified: branches/SAMBA_4_0/source/torture/rpc/wkssvc.c =================================================================== --- branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 09:35:10 UTC (rev 26142) +++ branches/SAMBA_4_0/source/torture/rpc/wkssvc.c 2007-11-27 09:41:50 UTC (rev 26143) @@ -22,6 +22,8 @@ #include "torture/torture.h" #include "librpc/gen_ndr/ndr_wkssvc_c.h" #include "torture/rpc/rpc.h" +#include "lib/cmdline/popt_common.h" +#include "param/param.h" static bool test_NetWkstaGetInfo(struct torture_context *tctx, struct dcerpc_pipe *p) @@ -129,6 +131,53 @@ return true; } + +static bool test_NetrWkstaUserGetInfo(struct torture_context *tctx, + struct dcerpc_pipe *p) +{ + NTSTATUS status; + struct wkssvc_NetrWkstaUserGetInfo r; + union wkssvc_NetrWkstaUserInfo info; + const char *dom = lp_workgroup(global_loadparm); + struct cli_credentials *creds = cmdline_credentials; + const char *user = cli_credentials_get_username(creds); + int i; + + const struct { + const char *unknown; + uint32_t level; + WERROR result; + } tests[] = { + { NULL, 0, WERR_NO_SUCH_LOGON_SESSION }, + { NULL, 1, WERR_NO_SUCH_LOGON_SESSION }, + { NULL, 1101, WERR_OK }, + { dom, 0, WERR_INVALID_PARAM }, + { dom, 1, WERR_INVALID_PARAM }, + { dom, 1101, WERR_INVALID_PARAM }, + { user, 0, WERR_INVALID_PARAM }, + { user, 1, WERR_INVALID_PARAM }, + { user, 1101, WERR_INVALID_PARAM }, + }; + + for (i=0; i<ARRAY_SIZE(tests); i++) { + r.in.unknown = tests[i].unknown; + r.in.level = tests[i].level; + r.out.info = &info; + + torture_comment(tctx, "testing NetrWkstaUserGetInfo level %u\n", + r.in.level); + + status = dcerpc_wkssvc_NetrWkstaUserGetInfo(p, tctx, &r); + torture_assert_ntstatus_ok(tctx, status, + "NetrWkstaUserGetInfo failed"); + torture_assert_werr_equal(tctx, r.out.result, + tests[i].result, + "NetrWkstaUserGetInfo failed"); + } + + return true; +} + struct torture_suite *torture_rpc_wkssvc(TALLOC_CTX *mem_ctx) { struct torture_suite *suite; @@ -144,6 +193,8 @@ test_NetWkstaTransportEnum); torture_rpc_tcase_add_test(tcase, "NetWkstaEnumUsers", test_NetWkstaEnumUsers); + torture_rpc_tcase_add_test(tcase, "NetrWkstaUserGetInfo", + test_NetrWkstaUserGetInfo); return suite; }