fixed a memory leak in make_server_info()
authortridge <tridge@0c0555d6-39d7-0310-84fc-f1cc0bd64818>
Sun, 26 Sep 2004 05:38:45 +0000 (05:38 +0000)
committertridge <tridge@0c0555d6-39d7-0310-84fc-f1cc0bd64818>
Sun, 26 Sep 2004 05:38:45 +0000 (05:38 +0000)
git-svn-id: svn+ssh://svn.samba.org/data/svn/samba/branches/SAMBA_4_0@2650 0c0555d6-39d7-0310-84fc-f1cc0bd64818

source/auth/auth_builtin.c
source/auth/auth_sam.c
source/auth/auth_server.c
source/auth/auth_unix.c
source/auth/auth_util.c
source/libcli/auth/gensec_krb5.c

index aa5355059ca31d963aa5ad1f8ed39cb3f0ec59ad..30f50806dc6e048283516bc67ba3b29a62cb8764 100644 (file)
@@ -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;
index 74c8edcb8234a539361804792aaa04bb84ac26f9..8c86328c05f9499e98521084f8a2bdd7d523424d 100644 (file)
@@ -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;
        }
index be272e625cacaf8635da6c0172e223578b1691fa..d0c4bfc90239ecc39fb020b533707eb90ae089ac 100644 (file)
@@ -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;
                }
index b7c3475e55d527848baebe4cad77bdbed0cc6bab..01868dd9492ff9eb96a1241a176e5cc35efa794f 100644 (file)
@@ -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;
index f508cff35e0e04eed8b6990b9bcb94c682671c5e..93799cf36b33abaf52996a5c877336fa990371a1 100644 (file)
@@ -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;
index 7d92873ac7911c11398d9239ef429d2f47dbfaae..7895a6f1ed6740145932ef7388a504874651aaf2 100644 (file)
@@ -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;
        }