[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.147.2.4 and 1.147.2.5

version 1.147.2.4, 2002/06/22 07:23:18 version 1.147.2.5, 2002/10/11 14:53:07
Line 138 
Line 138 
 /* # of replies received for global requests */  /* # of replies received for global requests */
 static int client_global_request_id = 0;  static int client_global_request_id = 0;
   
   /* pid of proxycommand child process */
   pid_t proxy_command_pid = 0;
   
 /* Prints a help message to the user.  This function never returns. */  /* Prints a help message to the user.  This function never returns. */
   
 static void  static void
Line 166 
Line 169 
         fprintf(stderr, "  -v          Verbose; display verbose debugging messages.\n");          fprintf(stderr, "  -v          Verbose; display verbose debugging messages.\n");
         fprintf(stderr, "              Multiple -v increases verbosity.\n");          fprintf(stderr, "              Multiple -v increases verbosity.\n");
         fprintf(stderr, "  -V          Display version number only.\n");          fprintf(stderr, "  -V          Display version number only.\n");
         fprintf(stderr, "  -P          Don't allocate a privileged port.\n");  
         fprintf(stderr, "  -q          Quiet; don't display any warning messages.\n");          fprintf(stderr, "  -q          Quiet; don't display any warning messages.\n");
         fprintf(stderr, "  -f          Fork into background after authentication.\n");          fprintf(stderr, "  -f          Fork into background after authentication.\n");
         fprintf(stderr, "  -e char     Set escape character; ``none'' = disable (default: ~).\n");          fprintf(stderr, "  -e char     Set escape character; ``none'' = disable (default: ~).\n");
Line 219 
Line 221 
         original_real_uid = getuid();          original_real_uid = getuid();
         original_effective_uid = geteuid();          original_effective_uid = geteuid();
   
           /*
            * Use uid-swapping to give up root privileges for the duration of
            * option processing.  We will re-instantiate the rights when we are
            * ready to create the privileged port, and will permanently drop
            * them when the port has been created (actually, when the connection
            * has been made, as we may need to create the port several times).
            */
           PRIV_END;
   
         /* If we are installed setuid root be careful to not drop core. */          /* If we are installed setuid root be careful to not drop core. */
         if (original_real_uid != original_effective_uid) {          if (original_real_uid != original_effective_uid) {
                 struct rlimit rlim;                  struct rlimit rlim;
Line 236 
Line 247 
         pw = pwcopy(pw);          pw = pwcopy(pw);
   
         /*          /*
          * Use uid-swapping to give up root privileges for the duration of  
          * option processing.  We will re-instantiate the rights when we are  
          * ready to create the privileged port, and will permanently drop  
          * them when the port has been created (actually, when the connection  
          * has been made, as we may need to create the port several times).  
          */  
         PRIV_END;  
   
         /*  
          * Set our umask to something reasonable, as some files are created           * Set our umask to something reasonable, as some files are created
          * with the default umask.  This will make them world-readable but           * with the default umask.  This will make them world-readable but
          * writable only by the owner, which is ok for all files for which we           * writable only by the owner, which is ok for all files for which we
Line 290 
Line 292 
                 case 'g':                  case 'g':
                         options.gateway_ports = 1;                          options.gateway_ports = 1;
                         break;                          break;
                 case 'P':                  case 'P':       /* deprecated */
                         options.use_privileged_port = 0;                          options.use_privileged_port = 0;
                         break;                          break;
                 case 'a':                  case 'a':
Line 539 
Line 541 
         if (buffer_len(&command) == 0)          if (buffer_len(&command) == 0)
                 tty_flag = 1;                  tty_flag = 1;
   
         /* Force no tty*/          /* Force no tty */
         if (no_tty_flag)          if (no_tty_flag)
                 tty_flag = 0;                  tty_flag = 0;
         /* Do not allocate a tty if stdin is not a tty. */          /* Do not allocate a tty if stdin is not a tty. */
Line 613 
Line 615 
         if (options.rhosts_rsa_authentication ||          if (options.rhosts_rsa_authentication ||
             options.hostbased_authentication) {              options.hostbased_authentication) {
                 sensitive_data.nkeys = 3;                  sensitive_data.nkeys = 3;
                 sensitive_data.keys = xmalloc(sensitive_data.nkeys*sizeof(Key));                  sensitive_data.keys = xmalloc(sensitive_data.nkeys *
                       sizeof(Key));
   
                 PRIV_START;                  PRIV_START;
                 sensitive_data.keys[0] = key_load_private_type(KEY_RSA1,                  sensitive_data.keys[0] = key_load_private_type(KEY_RSA1,
Line 624 
Line 627 
                     _PATH_HOST_RSA_KEY_FILE, "", NULL);                      _PATH_HOST_RSA_KEY_FILE, "", NULL);
                 PRIV_END;                  PRIV_END;
   
                 if (sensitive_data.keys[0] == NULL &&                  if (options.hostbased_authentication == 1 &&
                       sensitive_data.keys[0] == NULL &&
                     sensitive_data.keys[1] == NULL &&                      sensitive_data.keys[1] == NULL &&
                     sensitive_data.keys[2] == NULL) {                      sensitive_data.keys[2] == NULL) {
                         sensitive_data.keys[1] = key_load_public(                          sensitive_data.keys[1] = key_load_public(
Line 697 
Line 701 
   
         exit_status = compat20 ? ssh_session2() : ssh_session();          exit_status = compat20 ? ssh_session2() : ssh_session();
         packet_close();          packet_close();
   
           /*
            * Send SIGHUP to proxy command if used. We don't wait() in
            * case it hangs and instead rely on init to reap the child
            */
           if (proxy_command_pid > 1)
                   kill(proxy_command_pid, SIGHUP);
   
         return exit_status;          return exit_status;
 }  }
   
Line 708 
Line 720 
         FILE *f;          FILE *f;
         int got_data = 0, i;          int got_data = 0, i;
         char *display;          char *display;
           struct stat st;
   
         *_proto = proto;          *_proto = proto;
         *_data = data;          *_data = data;
         proto[0] = data[0] = '\0';          proto[0] = data[0] = '\0';
         if (options.xauth_location && (display = getenv("DISPLAY"))) {          if (!options.xauth_location ||
               (stat(options.xauth_location, &st) == -1)) {
                   debug("No xauth program.");
           } else {
                   if ((display = getenv("DISPLAY")) == NULL) {
                           debug("x11_get_proto: DISPLAY not set");
                           return;
                   }
                 /* Try to get Xauthority information for the display. */                  /* Try to get Xauthority information for the display. */
                 if (strncmp(display, "localhost:", 10) == 0)                  if (strncmp(display, "localhost:", 10) == 0)
                         /*                          /*
Line 727 
Line 747 
                 else                  else
                         snprintf(line, sizeof line, "%s list %.200s 2>"                          snprintf(line, sizeof line, "%s list %.200s 2>"
                             _PATH_DEVNULL, options.xauth_location, display);                              _PATH_DEVNULL, options.xauth_location, display);
                 debug2("x11_get_proto %s", line);                  debug2("x11_get_proto: %s", line);
                 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 %511s %511s", proto, data) == 2)                      sscanf(line, "%*s %511s %511s", proto, data) == 2)
Line 746 
Line 766 
         if (!got_data) {          if (!got_data) {
                 u_int32_t rand = 0;                  u_int32_t rand = 0;
   
                   log("Warning: No xauth data; using fake authentication data for X11 forwarding.");
                 strlcpy(proto, "MIT-MAGIC-COOKIE-1", sizeof proto);                  strlcpy(proto, "MIT-MAGIC-COOKIE-1", sizeof proto);
                 for (i = 0; i < 16; i++) {                  for (i = 0; i < 16; i++) {
                         if (i % 4 == 0)                          if (i % 4 == 0)
Line 795 
Line 816 
 {  {
         if (options.forward_agent) {          if (options.forward_agent) {
                 /* Clear agent forwarding if we don\'t have an agent. */                  /* Clear agent forwarding if we don\'t have an agent. */
                 int authfd = ssh_get_authentication_socket();                  if (!ssh_agent_present())
                 if (authfd < 0)  
                         options.forward_agent = 0;                          options.forward_agent = 0;
                 else  
                         ssh_close_authentication_socket(authfd);  
         }          }
 }  }
   

Legend:
Removed from v.1.147.2.4  
changed lines
  Added in v.1.147.2.5