The branch, v3-6-test has been updated via 519e376 s4-smbtorture: print SVCCTL security descriptor in test_QueryServiceObjectSecurity(). via d2923fd s4-smbtorture: add NetRemoteTOD libnetapi torture test. from 7d46593 s3-libnetapi: Fix Bug #7665, memory leak in netapi connection manager.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-6-test - Log ----------------------------------------------------------------- commit 519e376a02d16efa17dab343bb5683b1795a6c7b Author: Günther Deschner <g...@samba.org> Date: Mon Sep 20 17:41:18 2010 -0700 s4-smbtorture: print SVCCTL security descriptor in test_QueryServiceObjectSecurity(). Guenther (cherry picked from commit c201e494c476e3245f887c4491a909126d1c3333) commit d2923fd77207803e36e9422bf19c0fd475455a86 Author: Günther Deschner <g...@samba.org> Date: Mon Sep 20 13:53:09 2010 -0700 s4-smbtorture: add NetRemoteTOD libnetapi torture test. Guenther (cherry picked from commit 58c79b828baa15ba1619574c8277c455364676e8) ----------------------------------------------------------------------- Summary of changes: source4/torture/libnetapi/config.mk | 3 +- source4/torture/libnetapi/libnetapi.c | 1 + source4/torture/libnetapi/libnetapi_server.c | 76 ++++++++++++++++++++++++++ source4/torture/libnetapi/wscript_build | 2 +- source4/torture/rpc/svcctl.c | 17 ++++++ 5 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 source4/torture/libnetapi/libnetapi_server.c Changeset truncated at 500 lines: diff --git a/source4/torture/libnetapi/config.mk b/source4/torture/libnetapi/config.mk index 2ac506e..0cd485e 100644 --- a/source4/torture/libnetapi/config.mk +++ b/source4/torture/libnetapi/config.mk @@ -12,6 +12,7 @@ PRIVATE_DEPENDENCIES = \ TORTURE_LIBNETAPI_OBJ_FILES = $(addprefix $(torturesrcdir)/libnetapi/, libnetapi.o \ libnetapi_user.o \ - libnetapi_group.o) + libnetapi_group.o + libnetapi_server.o) $(eval $(call proto_header_template,$(torturesrcdir)/libnetapi/proto.h,$(TORTURE_LIBNETAPI_OBJ_FILES:.o=.c))) diff --git a/source4/torture/libnetapi/libnetapi.c b/source4/torture/libnetapi/libnetapi.c index c3a27eb..6854bf8 100644 --- a/source4/torture/libnetapi/libnetapi.c +++ b/source4/torture/libnetapi/libnetapi.c @@ -68,6 +68,7 @@ NTSTATUS torture_libnetapi_init(void) suite = torture_suite_create(talloc_autofree_context(), "NETAPI"); + torture_suite_add_simple_test(suite, "SERVER", torture_libnetapi_server); torture_suite_add_simple_test(suite, "GROUP", torture_libnetapi_group); torture_suite_add_simple_test(suite, "USER", torture_libnetapi_user); torture_suite_add_simple_test(suite, "INITIALIZE", torture_libnetapi_initialize); diff --git a/source4/torture/libnetapi/libnetapi_server.c b/source4/torture/libnetapi/libnetapi_server.c new file mode 100644 index 0000000..1888009 --- /dev/null +++ b/source4/torture/libnetapi/libnetapi_server.c @@ -0,0 +1,76 @@ +/* + Unix SMB/CIFS implementation. + SMB torture tester + Copyright (C) Guenther Deschner 2010 + + 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 + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include "includes.h" +#include "torture/smbtorture.h" +#include <netapi.h> +#include "torture/libnetapi/proto.h" + +#define NETAPI_STATUS(tctx, x,y,fn) \ + torture_warning(tctx, "FAILURE: line %d: %s failed with status: %s (%d)\n", \ + __LINE__, fn, libnetapi_get_error_string(x,y), y); + +bool torture_libnetapi_server(struct torture_context *tctx) +{ + NET_API_STATUS status = 0; + uint8_t *buffer = NULL; + int i; + + const char *hostname = torture_setting_string(tctx, "host", NULL); + struct libnetapi_ctx *ctx; + + torture_assert(tctx, torture_libnetapi_init_context(tctx, &ctx), + "failed to initialize libnetapi"); + + torture_comment(tctx, "NetServer tests\n"); + + torture_comment(tctx, "Testing NetRemoteTOD\n"); + + status = NetRemoteTOD(hostname, &buffer); + if (status) { + NETAPI_STATUS(tctx, ctx, status, "NetRemoteTOD"); + goto out; + } + NetApiBufferFree(buffer); + + torture_comment(tctx, "Testing NetRemoteTOD 10 times\n"); + + for (i=0; i<10; i++) { + status = NetRemoteTOD(hostname, &buffer); + if (status) { + NETAPI_STATUS(tctx, ctx, status, "NetRemoteTOD"); + goto out; + } + NetApiBufferFree(buffer); + } + + status = 0; + + torture_comment(tctx, "NetServer tests succeeded\n"); + out: + if (status != 0) { + torture_comment(tctx, "NetServer testsuite failed with: %s\n", + libnetapi_get_error_string(ctx, status)); + libnetapi_free(ctx); + return false; + } + + libnetapi_free(ctx); + return true; +} diff --git a/source4/torture/libnetapi/wscript_build b/source4/torture/libnetapi/wscript_build index ddcc602..a087c96 100644 --- a/source4/torture/libnetapi/wscript_build +++ b/source4/torture/libnetapi/wscript_build @@ -1,7 +1,7 @@ #!/usr/bin/env python bld.SAMBA_MODULE('TORTURE_LIBNETAPI', - source='libnetapi.c libnetapi_user.c libnetapi_group.c', + source='libnetapi.c libnetapi_user.c libnetapi_group.c libnetapi_server.c', autoproto='proto.h', subsystem='smbtorture', init_function='torture_libnetapi_init', diff --git a/source4/torture/rpc/svcctl.c b/source4/torture/rpc/svcctl.c index 5ad678f..5c4f803 100644 --- a/source4/torture/rpc/svcctl.c +++ b/source4/torture/rpc/svcctl.c @@ -22,6 +22,7 @@ #include "includes.h" #include "librpc/gen_ndr/ndr_svcctl_c.h" #include "librpc/gen_ndr/ndr_svcctl.h" +#include "librpc/gen_ndr/ndr_security.h" #include "torture/rpc/torture_rpc.h" #include "param/param.h" @@ -280,6 +281,10 @@ static bool test_QueryServiceObjectSecurity(struct torture_context *tctx, uint8_t *buffer; uint32_t needed; + enum ndr_err_code ndr_err; + struct security_descriptor sd; + DATA_BLOB blob; + if (!test_OpenSCManager(b, tctx, &h)) return false; @@ -315,6 +320,18 @@ static bool test_QueryServiceObjectSecurity(struct torture_context *tctx, torture_assert_werr_ok(tctx, r.out.result, "QueryServiceObjectSecurity failed!"); + blob = data_blob_const(buffer, needed); + + ndr_err = ndr_pull_struct_blob(&blob, tctx, &sd, + (ndr_pull_flags_fn_t)ndr_pull_security_descriptor); + if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + return false; + } + + if (DEBUGLEVEL >= 1) { + NDR_PRINT_DEBUG(security_descriptor, &sd); + } + if (!test_CloseServiceHandle(b, tctx, &s)) return false; -- Samba Shared Repository