From df6dce1065d4323ebf8ca97b69f0a44804f19e11 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 26 Sep 2004 05:38:45 +0000 Subject: r2650: fixed a memory leak in make_server_info() (This used to be commit 4aba6e7101041100f7d400abd5e7144b95528fc3) --- source4/auth/auth_builtin.c | 2 +- source4/auth/auth_sam.c | 2 +- source4/auth/auth_server.c | 2 +- source4/auth/auth_unix.c | 2 +- source4/auth/auth_util.c | 9 +++++---- source4/libcli/auth/gensec_krb5.c | 2 +- 6 files changed, 10 insertions(+), 9 deletions(-) (limited to 'source4') diff --git a/source4/auth/auth_builtin.c b/source4/auth/auth_builtin.c index aa5355059c..30f50806dc 100644 --- a/source4/auth/auth_builtin.c +++ b/source4/auth/auth_builtin.c @@ -43,7 +43,7 @@ static NTSTATUS check_guest_security(const struct auth_context *auth_context, if (!(user_info->internal_username.str && *user_info->internal_username.str)) { - nt_status = make_server_info_guest(server_info); + nt_status = make_server_info_guest(auth_context, server_info); } return nt_status; diff --git a/source4/auth/auth_sam.c b/source4/auth/auth_sam.c index 74c8edcb82..8c86328c05 100644 --- a/source4/auth/auth_sam.c +++ b/source4/auth/auth_sam.c @@ -304,7 +304,7 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context, return nt_status; } - if (!NT_STATUS_IS_OK(nt_status = make_server_info(server_info, username))) { + if (!NT_STATUS_IS_OK(nt_status = make_server_info(auth_context, server_info, username))) { DEBUG(0,("check_sam_security: make_server_info_sam() failed with '%s'\n", nt_errstr(nt_status))); return nt_status; } diff --git a/source4/auth/auth_server.c b/source4/auth/auth_server.c index be272e625c..d0c4bfc902 100644 --- a/source4/auth/auth_server.c +++ b/source4/auth/auth_server.c @@ -354,7 +354,7 @@ use this machine as the password server.\n")); if NT_STATUS_IS_OK(nt_status) { struct passwd *pass = Get_Pwnam(user_info->internal_username.str); if (pass) { - nt_status = make_server_info_pw(server_info, pass); + nt_status = make_server_info_pw(auth_context, server_info, pass); } else { nt_status = NT_STATUS_NO_SUCH_USER; } diff --git a/source4/auth/auth_unix.c b/source4/auth/auth_unix.c index b7c3475e55..01868dd949 100644 --- a/source4/auth/auth_unix.c +++ b/source4/auth/auth_unix.c @@ -108,7 +108,7 @@ static NTSTATUS check_unix_security(const struct auth_context *auth_context, if (NT_STATUS_IS_OK(nt_status)) { if (pass) { - make_server_info_pw(server_info, pass); + make_server_info_pw(auth_context, server_info, pass); } else { /* we need to do somthing more useful here */ nt_status = NT_STATUS_NO_SUCH_USER; diff --git a/source4/auth/auth_util.c b/source4/auth/auth_util.c index f508cff35e..93799cf36b 100644 --- a/source4/auth/auth_util.c +++ b/source4/auth/auth_util.c @@ -399,10 +399,11 @@ NTSTATUS create_nt_user_token(TALLOC_CTX *mem_ctx, Make a user_info struct ***************************************************************************/ -NTSTATUS make_server_info(struct auth_serversupplied_info **server_info, +NTSTATUS make_server_info(TALLOC_CTX *mem_ctx, + struct auth_serversupplied_info **server_info, const char *username) { - *server_info = talloc_p(NULL, struct auth_serversupplied_info); + *server_info = talloc_p(mem_ctx, struct auth_serversupplied_info); if (!*server_info) { DEBUG(0,("make_server_info: malloc failed!\n")); return NT_STATUS_NO_MEMORY; @@ -415,12 +416,12 @@ NTSTATUS make_server_info(struct auth_serversupplied_info **server_info, /*************************************************************************** Make (and fill) a user_info struct for a guest login. ***************************************************************************/ -NTSTATUS make_server_info_guest(struct auth_serversupplied_info **server_info) +NTSTATUS make_server_info_guest(TALLOC_CTX *mem_ctx, struct auth_serversupplied_info **server_info) { NTSTATUS nt_status; static const char zeros[16]; - nt_status = make_server_info(server_info, ""); + nt_status = make_server_info(mem_ctx, server_info, ""); if (!NT_STATUS_IS_OK(nt_status)) { return nt_status; diff --git a/source4/libcli/auth/gensec_krb5.c b/source4/libcli/auth/gensec_krb5.c index 7d92873ac7..7895a6f1ed 100644 --- a/source4/libcli/auth/gensec_krb5.c +++ b/source4/libcli/auth/gensec_krb5.c @@ -611,7 +611,7 @@ static NTSTATUS gensec_krb5_session_info(struct gensec_security *gensec_security *session_info_out = NULL; - nt_status = make_server_info(&server_info, gensec_krb5_state->peer_principal); + nt_status = make_server_info(gensec_security, &server_info, gensec_krb5_state->peer_principal); if (!NT_STATUS_IS_OK(nt_status)) { return nt_status; } -- cgit