[BACK]Return to session.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Diff for /src/usr.bin/ssh/session.c between version 1.172 and 1.173

version 1.172, 2004/01/30 09:48:57 version 1.173, 2004/04/27 09:46:37
Line 42 
Line 42 
 #include "sshpty.h"  #include "sshpty.h"
 #include "packet.h"  #include "packet.h"
 #include "buffer.h"  #include "buffer.h"
   #include "match.h"
 #include "mpaux.h"  #include "mpaux.h"
 #include "uidswap.h"  #include "uidswap.h"
 #include "compat.h"  #include "compat.h"
Line 793 
Line 794 
   
         if (!options.use_login) {          if (!options.use_login) {
                 /* Set basic environment. */                  /* Set basic environment. */
                   for (i = 0; i < s->num_env; i++)
                           child_set_env(&env, &envsize, s->env[i].name,
                               s->env[i].val);
   
                 child_set_env(&env, &envsize, "USER", pw->pw_name);                  child_set_env(&env, &envsize, "USER", pw->pw_name);
                 child_set_env(&env, &envsize, "LOGNAME", pw->pw_name);                  child_set_env(&env, &envsize, "LOGNAME", pw->pw_name);
                 child_set_env(&env, &envsize, "HOME", pw->pw_dir);                  child_set_env(&env, &envsize, "HOME", pw->pw_dir);
Line 1514 
Line 1519 
 }  }
   
 static int  static int
   session_env_req(Session *s)
   {
           char *name, *val;
           u_int name_len, val_len, i;
   
           name = packet_get_string(&name_len);
           val = packet_get_string(&val_len);
           packet_check_eom();
   
           /* Don't set too many environment variables */
           if (s->num_env > 128) {
                   debug2("Ignoring env request %s: too many env vars", name);
                   goto fail;
           }
   
           for (i = 0; i < options.num_accept_env; i++) {
                   if (match_pattern(name, options.accept_env[i])) {
                           debug2("Setting env %d: %s=%s", s->num_env, name, val);
                           s->env = xrealloc(s->env, sizeof(*s->env) *
                               (s->num_env + 1));
                           s->env[s->num_env].name = name;
                           s->env[s->num_env].val = val;
                           s->num_env++;
                           return (1);
                   }
           }
           debug2("Ignoring env request %s: disallowed name", name);
   
    fail:
           xfree(name);
           xfree(val);
           return (0);
   }
   
   static int
 session_auth_agent_req(Session *s)  session_auth_agent_req(Session *s)
 {  {
         static int called = 0;          static int called = 0;
Line 1562 
Line 1602 
                         success = session_subsystem_req(s);                          success = session_subsystem_req(s);
                 } else if (strcmp(rtype, "break") == 0) {                  } else if (strcmp(rtype, "break") == 0) {
                         success = session_break_req(s);                          success = session_break_req(s);
                   } else if (strcmp(rtype, "env") == 0) {
                           success = session_env_req(s);
                 }                  }
         }          }
         if (strcmp(rtype, "window-change") == 0) {          if (strcmp(rtype, "window-change") == 0) {
Line 1695 
Line 1737 
 void  void
 session_close(Session *s)  session_close(Session *s)
 {  {
           int i;
   
         debug("session_close: session %d pid %ld", s->self, (long)s->pid);          debug("session_close: session %d pid %ld", s->self, (long)s->pid);
         if (s->ttyfd != -1)          if (s->ttyfd != -1)
                 session_pty_cleanup(s);                  session_pty_cleanup(s);
Line 1709 
Line 1753 
         if (s->auth_proto)          if (s->auth_proto)
                 xfree(s->auth_proto);                  xfree(s->auth_proto);
         s->used = 0;          s->used = 0;
           for (i = 0; i < s->num_env; i++) {
                   xfree(s->env[i].name);
                   xfree(s->env[i].val);
           }
           if (s->env != NULL)
                   xfree(s->env);
         session_proctitle(s);          session_proctitle(s);
 }  }
   

Legend:
Removed from v.1.172  
changed lines
  Added in v.1.173