[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 and 1.51.2.2

version 1.51, 2000/05/08 17:12:15 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 108 
Line 108 
         fprintf(stderr, "Options:\n");          fprintf(stderr, "Options:\n");
         fprintf(stderr, "  -l user     Log in using this user name.\n");          fprintf(stderr, "  -l user     Log in using this user name.\n");
         fprintf(stderr, "  -n          Redirect input from /dev/null.\n");          fprintf(stderr, "  -n          Redirect input from /dev/null.\n");
           fprintf(stderr, "  -A          Enable authentication agent forwarding.\n");
         fprintf(stderr, "  -a          Disable authentication agent forwarding.\n");          fprintf(stderr, "  -a          Disable authentication agent forwarding.\n");
 #ifdef AFS  #ifdef AFS
         fprintf(stderr, "  -k          Disable Kerberos ticket and AFS token forwarding.\n");          fprintf(stderr, "  -k          Disable Kerberos ticket and AFS token forwarding.\n");
 #endif                          /* AFS */  #endif                          /* AFS */
           fprintf(stderr, "  -X          Enable X11 connection forwarding.\n");
         fprintf(stderr, "  -x          Disable X11 connection forwarding.\n");          fprintf(stderr, "  -x          Disable X11 connection forwarding.\n");
         fprintf(stderr, "  -i file     Identity for RSA authentication (default: ~/.ssh/identity).\n");          fprintf(stderr, "  -i file     Identity for RSA authentication (default: ~/.ssh/identity).\n");
         fprintf(stderr, "  -t          Tty; allocate a tty even if command is given.\n");          fprintf(stderr, "  -t          Tty; allocate a tty even if command is given.\n");
Line 241 
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 306 
Line 308 
                 case 'a':                  case 'a':
                         options.forward_agent = 0;                          options.forward_agent = 0;
                         break;                          break;
                   case 'A':
                           options.forward_agent = 1;
                           break;
 #ifdef AFS  #ifdef AFS
                 case 'k':                  case 'k':
                         options.kerberos_tgt_passing = 0;                          options.kerberos_tgt_passing = 0;
Line 422 
Line 427 
         if (!host)          if (!host)
                 usage();                  usage();
   
         OpenSSL_add_all_algorithms();          SSLeay_add_all_algorithms();
   
         /* Initialize the command to execute on remote host. */          /* Initialize the command to execute on remote host. */
         buffer_init(&command);          buffer_init(&command);
Line 446 
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 475 
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 607 
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 664 
Line 670 
         FILE *f;          FILE *f;
         int got_data = 0, i;          int got_data = 0, i;
   
 #ifdef XAUTH_PATH          if (options.xauth_location) {
         /* Try to get Xauthority information for the display. */                  /* Try to get Xauthority information for the display. */
         snprintf(line, sizeof line, "%.100s list %.200s 2>/dev/null",                  snprintf(line, sizeof line, "%.100s list %.200s 2>/dev/null",
                  XAUTH_PATH, getenv("DISPLAY"));                      options.xauth_location, getenv("DISPLAY"));
         f = popen(line, "r");                  f = popen(line, "r");
         if (f && fgets(line, sizeof(line), f) &&                  if (f && fgets(line, sizeof(line), f) &&
             sscanf(line, "%*s %s %s", proto, data) == 2)                      sscanf(line, "%*s %s %s", proto, data) == 2)
                 got_data = 1;                          got_data = 1;
         if (f)                  if (f)
                 pclose(f);                          pclose(f);
 #endif /* XAUTH_PATH */          }
         /*          /*
          * If we didn't get authentication data, just make up some           * If we didn't get authentication data, just make up some
          * data.  The forwarding code will check the validity of the           * data.  The forwarding code will check the validity of the
Line 856 
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 939 
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 957 
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  
changed lines
  Added in v.1.51.2.2