1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-28 01:58:17 +03:00

s4-smbtorture: add test for svcctl_QueryServiceConfig2W.

Guenther
This commit is contained in:
Günther Deschner 2008-11-14 11:36:47 +01:00
parent abbd539082
commit 2409f216cf

View File

@ -118,6 +118,53 @@ static bool test_QueryServiceStatusEx(struct torture_context *tctx, struct dcerp
return true;
}
static bool test_QueryServiceConfig2W(struct torture_context *tctx, struct dcerpc_pipe *p)
{
struct svcctl_QueryServiceConfig2W r;
struct policy_handle h, s;
NTSTATUS status;
uint32_t info_level = 0;
uint8_t *buffer;
uint32_t buf_size = 0;
uint32_t bytes_needed = 0;
if (!test_OpenSCManager(p, tctx, &h))
return false;
if (!test_OpenService(p, tctx, &h, "Netlogon", &s))
return false;
buffer = talloc(tctx, uint8_t);
r.in.handle = &s;
r.in.info_level = 1;
r.in.buf_size = buf_size;
r.out.buffer = buffer;
r.out.bytes_needed = &bytes_needed;
status = dcerpc_svcctl_QueryServiceConfig2W(p, tctx, &r);
torture_assert_ntstatus_ok(tctx, status, "QueryServiceConfig2W failed!");
if (W_ERROR_EQUAL(r.out.result, WERR_INSUFFICIENT_BUFFER)) {
r.in.buf_size = bytes_needed;
buffer = talloc_array(tctx, uint8_t, bytes_needed);
r.out.buffer = buffer;
status = dcerpc_svcctl_QueryServiceConfig2W(p, tctx, &r);
torture_assert_ntstatus_ok(tctx, status, "QueryServiceConfig2W failed!");
torture_assert_werr_ok(tctx, r.out.result, "QueryServiceConfig2W failed!");
}
if (!test_CloseServiceHandle(p, tctx, &s))
return false;
if (!test_CloseServiceHandle(p, tctx, &h))
return false;
return true;
}
static bool test_EnumServicesStatus(struct torture_context *tctx, struct dcerpc_pipe *p)
{
struct svcctl_EnumServicesStatusW r;
@ -195,6 +242,8 @@ struct torture_suite *torture_rpc_svcctl(TALLOC_CTX *mem_ctx)
test_EnumServicesStatus);
torture_rpc_tcase_add_test(tcase, "QueryServiceStatusEx",
test_QueryServiceStatusEx);
torture_rpc_tcase_add_test(tcase, "QueryServiceConfig2W",
test_QueryServiceConfig2W);
return suite;
}