]> andersk Git - openssh.git/commitdiff
- (stevesk) [auth-pam.[ch] session.c] pam_getenvlist() must be
authorstevesk <stevesk>
Tue, 23 Jul 2002 00:44:07 +0000 (00:44 +0000)
committerstevesk <stevesk>
Tue, 23 Jul 2002 00:44:07 +0000 (00:44 +0000)
   freed by the caller; add free_pam_environment() and use it.

ChangeLog
auth-pam.c
auth-pam.h
session.c

index 6fe8ad6b9da1e0cc608fc83c5b410410989e57e8..0ae1c933067e9bdd68e6d6b55eff575ffaa02a98 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,8 @@
  - (bal) [configure.ac]  Missing ;; from cray patch.
  - (bal) [monitor_mm.c openbsd-compat/xmmap.h] Move xmmap() defines
    into it's own header.
+ - (stevesk) [auth-pam.[ch] session.c] pam_getenvlist() must be
+   freed by the caller; add free_pam_environment() and use it.
 
 20020721
  - (stevesk) [auth-pam.c] merge cosmetic changes from solar's
index e6bd851ceb554d1aa0756b62706e6a58171e3042..1d58b20785b0487b8fd1d2832baf7c8aa0911c21 100644 (file)
@@ -421,6 +421,16 @@ char **fetch_pam_environment(void)
 #endif /* HAVE_PAM_GETENVLIST */
 }
 
+void free_pam_environment(char **env)
+{
+       int i;
+
+       if (env != NULL) {
+               for (i = 0; env[i] != NULL; i++)
+                       xfree(env[i]);
+       }
+}
+
 /* Print any messages that have been generated during authentication */
 /* or account checking to stderr */
 void print_pam_messages(void)
index 966c719b25953445148a578e15196b6c58e43191..585ceb8df2ab17a365a35c7c45b187ae52ea3016 100644 (file)
@@ -35,6 +35,7 @@ void start_pam(const char *user);
 void finish_pam(void);
 int auth_pam_password(Authctxt *authctxt, const char *password);
 char **fetch_pam_environment(void);
+void free_pam_environment(char **env);
 int do_pam_authenticate(int flags);
 int do_pam_account(char *username, char *remote_user);
 void do_pam_session(char *username, const char *ttyname);
index 5fb1ace006256148f5eb1b5fd4ab27584a56a739..3c759e4725c16a140a2698339480e9d515302e1e 100644 (file)
--- a/session.c
+++ b/session.c
@@ -1042,8 +1042,17 @@ do_setup_env(Session *s, const char *shell)
                    s->authctxt->krb5_ticket_file);
 #endif
 #ifdef USE_PAM
-       /* Pull in any environment variables that may have been set by PAM. */
-       copy_environment(fetch_pam_environment(), &env, &envsize);
+       /*
+        * Pull in any environment variables that may have
+        * been set by PAM.
+        */
+       {
+               char **p;
+
+               p = fetch_pam_environment();
+               copy_environment(p, &env, &envsize);
+               free_pam_environment(p);
+       }
 #endif /* USE_PAM */
 
        if (auth_sock_name != NULL)
This page took 0.052657 seconds and 5 git commands to generate.