mirror of
https://github.com/samba-team/samba.git
synced 2025-01-13 13:18:06 +03:00
s4-smbtorture: print hand-decoded service status array in svcctl torture test.
Guenther
This commit is contained in:
parent
b516a2abca
commit
f2dd351a1e
@ -197,7 +197,7 @@ NDR_SRVSVC_OBJ_FILES = ../librpc/gen_ndr/ndr_srvsvc.o
|
||||
[SUBSYSTEM::NDR_SVCCTL]
|
||||
PUBLIC_DEPENDENCIES = LIBNDR
|
||||
|
||||
NDR_SVCCTL_OBJ_FILES = ../librpc/gen_ndr/ndr_svcctl.o
|
||||
NDR_SVCCTL_OBJ_FILES = ../librpc/gen_ndr/ndr_svcctl.o ../librpc/ndr/ndr_svcctl.o
|
||||
|
||||
PUBLIC_HEADERS += $(addprefix ../librpc/gen_ndr/, ndr_svcctl.h svcctl.h)
|
||||
|
||||
|
@ -22,7 +22,9 @@
|
||||
#include "includes.h"
|
||||
#include "torture/torture.h"
|
||||
#include "librpc/gen_ndr/ndr_svcctl_c.h"
|
||||
#include "librpc/gen_ndr/ndr_svcctl.h"
|
||||
#include "torture/rpc/rpc.h"
|
||||
#include "param/param.h"
|
||||
|
||||
static bool test_OpenSCManager(struct dcerpc_pipe *p, struct torture_context *tctx, struct policy_handle *h)
|
||||
{
|
||||
@ -220,12 +222,36 @@ static bool test_EnumServicesStatus(struct torture_context *tctx, struct dcerpc_
|
||||
|
||||
torture_assert_ntstatus_ok(tctx, status, "EnumServicesStatus failed!");
|
||||
torture_assert_werr_ok(tctx, r.out.result, "EnumServicesStatus failed");
|
||||
}
|
||||
|
||||
service = (struct ENUM_SERVICE_STATUSW *)r.out.service;
|
||||
if (services_returned > 0) {
|
||||
|
||||
enum ndr_err_code ndr_err;
|
||||
DATA_BLOB blob;
|
||||
struct ndr_pull *ndr;
|
||||
|
||||
blob.length = r.in.buf_size;
|
||||
blob.data = talloc_steal(tctx, r.out.service);
|
||||
|
||||
ndr = ndr_pull_init_blob(&blob, tctx, lp_iconv_convenience(tctx->lp_ctx));
|
||||
|
||||
service = talloc_array(tctx, struct ENUM_SERVICE_STATUSW, services_returned);
|
||||
if (!service) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ndr_err = ndr_pull_ENUM_SERVICE_STATUSW_array(
|
||||
ndr, services_returned, service);
|
||||
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
for(i = 0; i < services_returned; i++) {
|
||||
printf("Type: %d, State: %d\n", service[i].status.type, service[i].status.state);
|
||||
|
||||
printf("%-20s \"%s\", Type: %d, State: %d\n",
|
||||
service[i].service_name, service[i].display_name,
|
||||
service[i].status.type, service[i].status.state);
|
||||
}
|
||||
|
||||
if (!test_CloseServiceHandle(p, tctx, &h))
|
||||
|
Loading…
Reference in New Issue
Block a user