From ac512a5bb2113aed1d41ef5479a75b8e05918876 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Fri, 30 Nov 2007 19:56:41 +0100 Subject: Robustness-fixes for NetJoinDomain(). Guenther (This used to be commit 2d5236cc37fe015ce9098a0ebe99cdc0ca3537ae) --- source3/lib/netapi/joindomain.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'source3/lib/netapi') diff --git a/source3/lib/netapi/joindomain.c b/source3/lib/netapi/joindomain.c index 7c71276de6..29766e5994 100644 --- a/source3/lib/netapi/joindomain.c +++ b/source3/lib/netapi/joindomain.c @@ -35,6 +35,8 @@ WERROR NetJoinDomain(const char *server_name, WERROR werr; unsigned int old_timeout; + ZERO_STRUCT(encrypted_password); + mem_ctx = talloc_init("NetJoinDomain"); if (!mem_ctx) { werr = WERR_NOMEM; @@ -68,10 +70,12 @@ WERROR NetJoinDomain(const char *server_name, goto done; }; - encode_wkssvc_join_password_buffer(mem_ctx, - password, - &cli->user_session_key, - &encrypted_password); + if (password) { + encode_wkssvc_join_password_buffer(mem_ctx, + password, + &cli->user_session_key, + &encrypted_password); + } old_timeout = cli_set_timeout(cli, 60000); @@ -82,13 +86,16 @@ WERROR NetJoinDomain(const char *server_name, join_flags); if (!NT_STATUS_IS_OK(status)) { werr = ntstatus_to_werror(status); + goto done; } werr = WERR_OK; done: - cli_set_timeout(cli, old_timeout); - cli_shutdown(cli); + if (cli) { + cli_set_timeout(cli, old_timeout); + cli_shutdown(cli); + } TALLOC_FREE(mem_ctx); return werr; -- cgit