]> andersk Git - gssapi-openssh.git/blobdiff - openssh/session.c
Import of OpenSSH 3.7.1p2
[gssapi-openssh.git] / openssh / session.c
index 4497f5c0be009484caa3454501ae00fa3834e2bd..2898ac5185f0b84cf64dc5e8709815aa1550e715 100644 (file)
@@ -33,7 +33,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: session.c,v 1.163 2003/08/31 13:29:05 markus Exp $");
+RCSID("$OpenBSD: session.c,v 1.164 2003/09/18 08:49:45 markus Exp $");
 
 #include "ssh.h"
 #include "ssh1.h"
@@ -798,8 +798,9 @@ void
 child_set_env(char ***envp, u_int *envsizep, const char *name,
        const char *value)
 {
-       u_int i, namelen;
        char **env;
+       u_int envsize;
+       u_int i, namelen;
 
        /*
         * If we're passed an uninitialized list, allocate a single null
@@ -826,12 +827,13 @@ child_set_env(char ***envp, u_int *envsizep, const char *name,
                xfree(env[i]);
        } else {
                /* New variable.  Expand if necessary. */
-               if (i >= (*envsizep) - 1) {
-                       if (*envsizep >= 1000)
-                               fatal("child_set_env: too many env vars,"
-                                   " skipping: %.100s", name);
-                       (*envsizep) += 50;
-                       env = (*envp) = xrealloc(env, (*envsizep) * sizeof(char *));
+               envsize = *envsizep;
+               if (i >= envsize - 1) {
+                       if (envsize >= 1000)
+                               fatal("child_set_env: too many env vars");
+                       envsize += 50;
+                       env = (*envp) = xrealloc(env, envsize * sizeof(char *));
+                       *envsizep = envsize;
                }
                /* Need to set the NULL pointer at end of array beyond the new slot. */
                env[i + 1] = NULL;
@@ -912,8 +914,7 @@ static void
 read_etc_default_login(char ***env, u_int *envsize, uid_t uid)
 {
        char **tmpenv = NULL, *var;
-       u_int i;
-       size_t tmpenvsize = 0;
+       u_int i, tmpenvsize = 0;
        mode_t mask;
 
        /*
@@ -923,6 +924,9 @@ read_etc_default_login(char ***env, u_int *envsize, uid_t uid)
         */
        read_environment_file(&tmpenv, &tmpenvsize, "/etc/default/login");
 
+       if (tmpenv == NULL)
+               return;
+
        if (uid == 0)
                var = child_get_env(tmpenv, "SUPATH");
        else
This page took 0.034062 seconds and 4 git commands to generate.