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

Diff for /src/usr.bin/ssh/ssh.c between version 1.51.2.1 and 1.51.2.2

version 1.51.2.1, 2000/06/12 02:37:36 version 1.51.2.2, 2000/09/01 18:23:23
Line 11 
Line 11 
  */   */
   
 #include "includes.h"  #include "includes.h"
 RCSID("$Id$");  RCSID("$OpenBSD$");
   
 #include <openssl/evp.h>  #include <openssl/evp.h>
 #include <openssl/dsa.h>  #include <openssl/dsa.h>
Line 21 
Line 21 
 #include "ssh.h"  #include "ssh.h"
 #include "packet.h"  #include "packet.h"
 #include "buffer.h"  #include "buffer.h"
 #include "authfd.h"  
 #include "readconf.h"  #include "readconf.h"
 #include "uidswap.h"  #include "uidswap.h"
   
Line 29 
Line 28 
 #include "compat.h"  #include "compat.h"
 #include "channels.h"  #include "channels.h"
 #include "key.h"  #include "key.h"
   #include "authfd.h"
 #include "authfile.h"  #include "authfile.h"
   
 extern char *__progname;  extern char *__progname;
Line 243 
Line 243 
                 cp = strrchr(av0, '/') + 1;                  cp = strrchr(av0, '/') + 1;
         else          else
                 cp = av0;                  cp = av0;
         if (strcmp(cp, "rsh") != 0 && strcmp(cp, "ssh") != 0 &&          if (strcmp(cp, "rsh") && strcmp(cp, "ssh") && strcmp(cp, "rlogin") &&
             strcmp(cp, "rlogin") != 0 && strcmp(cp, "slogin") != 0)              strcmp(cp, "slogin") && strcmp(cp, "remsh"))
                 host = cp;                  host = cp;
   
         for (optind = 1; optind < ac; optind++) {          for (optind = 1; optind < ac; optind++) {
Line 451 
Line 451 
         }          }
   
         /* Cannot fork to background if no command. */          /* Cannot fork to background if no command. */
         if (fork_after_authentication_flag && buffer_len(&command) == 0)          if (fork_after_authentication_flag && buffer_len(&command) == 0 && !no_shell_flag)
                 fatal("Cannot fork into background without a command to execute.");                  fatal("Cannot fork into background without a command to execute.");
   
         /* Allocate a tty by default if no command specified. */          /* Allocate a tty by default if no command specified. */
Line 480 
Line 480 
         pwcopy.pw_passwd = xstrdup(pw->pw_passwd);          pwcopy.pw_passwd = xstrdup(pw->pw_passwd);
         pwcopy.pw_uid = pw->pw_uid;          pwcopy.pw_uid = pw->pw_uid;
         pwcopy.pw_gid = pw->pw_gid;          pwcopy.pw_gid = pw->pw_gid;
           pwcopy.pw_class = xstrdup(pw->pw_class);
         pwcopy.pw_dir = xstrdup(pw->pw_dir);          pwcopy.pw_dir = xstrdup(pw->pw_dir);
         pwcopy.pw_shell = xstrdup(pw->pw_shell);          pwcopy.pw_shell = xstrdup(pw->pw_shell);
         pw = &pwcopy;          pw = &pwcopy;
Line 612 
Line 613 
          */           */
         snprintf(buf, sizeof buf, "%.100s/%.100s", pw->pw_dir, SSH_USER_DIR);          snprintf(buf, sizeof buf, "%.100s/%.100s", pw->pw_dir, SSH_USER_DIR);
         if (stat(buf, &st) < 0)          if (stat(buf, &st) < 0)
                 if (mkdir(buf, 0755) < 0)                  if (mkdir(buf, 0700) < 0)
                         error("Could not create directory '%.200s'.", buf);                          error("Could not create directory '%.200s'.", buf);
   
         /* Check if the connection failed, and try "rsh" if appropriate. */          /* Check if the connection failed, and try "rsh" if appropriate. */
Line 861 
Line 862 
         }          }
   
         /* Enter the interactive session. */          /* Enter the interactive session. */
         return client_loop(have_tty, tty_flag ? options.escape_char : -1);          return client_loop(have_tty, tty_flag ? options.escape_char : -1, 0);
 }  }
   
 void  void
Line 944 
Line 945 
 ssh_session2(void)  ssh_session2(void)
 {  {
         int window, packetmax, id;          int window, packetmax, id;
         int in  = dup(STDIN_FILENO);          int in, out, err;
         int out = dup(STDOUT_FILENO);  
         int err = dup(STDERR_FILENO);  
   
           if (stdin_null_flag) {
                   in = open("/dev/null", O_RDONLY);
           } else {
                   in = dup(STDIN_FILENO);
           }
           out = dup(STDOUT_FILENO);
           err = dup(STDERR_FILENO);
   
         if (in < 0 || out < 0 || err < 0)          if (in < 0 || out < 0 || err < 0)
                 fatal("dump in/out/err failed");                  fatal("dup() in/out/err failed");
   
         /* should be pre-session */          /* should be pre-session */
         init_local_fwd();          init_local_fwd();
   
           /* If requested, let ssh continue in the background. */
           if (fork_after_authentication_flag)
                   if (daemon(1, 1) < 0)
                           fatal("daemon() failed: %.200s", strerror(errno));
   
         window = 32*1024;          window = 32*1024;
         if (tty_flag) {          if (tty_flag) {
                 packetmax = window/8;                  packetmax = window/8;
Line 962 
Line 974 
                 packetmax = window/2;                  packetmax = window/2;
         }          }
   
   /*XXX MAXPACK */
         id = channel_new(          id = channel_new(
             "session", SSH_CHANNEL_OPENING, in, out, err,              "session", SSH_CHANNEL_OPENING, in, out, err,
             window, packetmax, CHAN_EXTENDED_WRITE, xstrdup("client-session"));              window, packetmax, CHAN_EXTENDED_WRITE, xstrdup("client-session"));
   
   
         channel_open(id);          channel_open(id);
         channel_register_callback(id, SSH2_MSG_CHANNEL_OPEN_CONFIRMATION, client_init, (void *)0);          channel_register_callback(id, SSH2_MSG_CHANNEL_OPEN_CONFIRMATION, client_init, (void *)0);
   
         return client_loop(tty_flag, tty_flag ? options.escape_char : -1);          return client_loop(tty_flag, tty_flag ? options.escape_char : -1, id);
 }  }

Legend:
Removed from v.1.51.2.1  
changed lines
  Added in v.1.51.2.2