mirror of
https://github.com/samba-team/samba.git
synced 2025-01-12 09:18:10 +03:00
b21b012756
This is done so that the lpcfg_ functions are available across the whole build, either with the struct loadparm_context loaded from an smb.conf directly or as a wrapper around the source3 param code. This is not the final, merged loadparm, but simply one step to make it easier to solve other problems while we make our slow progress on this difficult problem. Andrew Bartlett
96 lines
2.9 KiB
C
96 lines
2.9 KiB
C
/*
|
|
Unix SMB/CIFS implementation.
|
|
SMB torture tester
|
|
Copyright (C) Guenther Deschner 2009
|
|
|
|
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 "source3/include/includes.h"
|
|
#include "torture/smbtorture.h"
|
|
#include "auth/credentials/credentials.h"
|
|
#include "lib/cmdline/popt_common.h"
|
|
#include "source3/lib/netapi/netapi.h"
|
|
#include "source3/lib/netapi/netapi_private.h"
|
|
#include "lib/param/param.h"
|
|
#include "torture/libnetapi/proto.h"
|
|
|
|
bool torture_libnetapi_init_context(struct torture_context *tctx,
|
|
struct libnetapi_ctx **ctx_p)
|
|
{
|
|
NET_API_STATUS status;
|
|
struct libnetapi_ctx *ctx;
|
|
|
|
if (!lp_load(lpcfg_configfile(tctx->lp_ctx), true, false, false, true)) {
|
|
fprintf(stderr, "error loading %s\n", lpcfg_configfile(tctx->lp_ctx));
|
|
return W_ERROR_V(WERR_GENERAL_FAILURE);
|
|
}
|
|
|
|
init_names();
|
|
load_interfaces();
|
|
|
|
status = libnetapi_net_init(&ctx);
|
|
if (status != 0) {
|
|
return false;
|
|
}
|
|
|
|
libnetapi_set_username(ctx,
|
|
cli_credentials_get_username(cmdline_credentials));
|
|
libnetapi_set_password(ctx,
|
|
cli_credentials_get_password(cmdline_credentials));
|
|
|
|
*ctx_p = ctx;
|
|
|
|
return true;
|
|
}
|
|
|
|
static bool torture_libnetapi_initialize(struct torture_context *tctx)
|
|
{
|
|
NET_API_STATUS status;
|
|
struct libnetapi_ctx *ctx;
|
|
|
|
/* We must do this first, as otherwise we fail if we don't
|
|
* have an smb.conf in the default path (we need to use the
|
|
* torture smb.conf */
|
|
torture_assert(tctx, torture_libnetapi_init_context(tctx, &ctx),
|
|
"failed to initialize libnetapi");
|
|
|
|
status = libnetapi_init(&ctx);
|
|
|
|
torture_assert(tctx, ctx != NULL, "Failed to get a libnetapi_ctx");
|
|
torture_assert_int_equal(tctx, status, 0, "libnetapi_init failed despite alredy being set up");
|
|
|
|
libnetapi_free(ctx);
|
|
|
|
return true;
|
|
}
|
|
|
|
NTSTATUS torture_libnetapi_init(void)
|
|
{
|
|
struct torture_suite *suite;
|
|
|
|
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);
|
|
|
|
suite->description = talloc_strdup(suite, "libnetapi convenience interface tests");
|
|
|
|
torture_register_suite(suite);
|
|
|
|
return NT_STATUS_OK;
|
|
}
|