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

Diff for /src/usr.bin/ssh/clientloop.c between version 1.141.2.1 and 1.141.2.2

version 1.141.2.1, 2006/02/03 03:01:56 version 1.141.2.2, 2006/10/06 03:19:32
Line 1 
Line 1 
   /* $OpenBSD$ */
 /*  /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>   * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland   * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
Line 58 
Line 59 
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.   * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */   */
   
 #include "includes.h"  
 RCSID("$OpenBSD$");  
   
   #include <sys/types.h>
   #include <sys/ioctl.h>
   #include <sys/stat.h>
   #include <sys/socket.h>
   #include <sys/time.h>
   #include <sys/param.h>
   
   #include <ctype.h>
   #include <errno.h>
   #include <paths.h>
   #include <signal.h>
   #include <stdio.h>
   #include <stdlib.h>
   #include <string.h>
   #include <termios.h>
   #include <pwd.h>
   #include <unistd.h>
   
   #include "xmalloc.h"
 #include "ssh.h"  #include "ssh.h"
 #include "ssh1.h"  #include "ssh1.h"
 #include "ssh2.h"  #include "ssh2.h"
 #include "xmalloc.h"  
 #include "packet.h"  #include "packet.h"
 #include "buffer.h"  #include "buffer.h"
 #include "compat.h"  #include "compat.h"
 #include "channels.h"  #include "channels.h"
 #include "dispatch.h"  #include "dispatch.h"
 #include "buffer.h"  
 #include "bufaux.h"  
 #include "key.h"  #include "key.h"
   #include "cipher.h"
 #include "kex.h"  #include "kex.h"
 #include "log.h"  #include "log.h"
 #include "readconf.h"  #include "readconf.h"
Line 118 
Line 134 
 static int in_non_blocking_mode = 0;  static int in_non_blocking_mode = 0;
   
 /* Common data for the client loop code. */  /* Common data for the client loop code. */
 static int quit_pending;        /* Set to non-zero to quit the client loop. */  static volatile sig_atomic_t quit_pending; /* Set non-zero to quit the loop. */
 static int escape_char;         /* Escape character. */  static int escape_char;         /* Escape character. */
 static int escape_pending;      /* Last character was the escape character */  static int escape_pending;      /* Last character was the escape character */
 static int last_was_cr;         /* Last character was a newline. */  static int last_was_cr;         /* Last character was a newline. */
Line 178 
Line 194 
  * Signal handler for the window change signal (SIGWINCH).  This just sets a   * Signal handler for the window change signal (SIGWINCH).  This just sets a
  * flag indicating that the window has changed.   * flag indicating that the window has changed.
  */   */
   /*ARGSUSED */
 static void  static void
 window_change_handler(int sig)  window_change_handler(int sig)
 {  {
Line 190 
Line 206 
  * Signal handler for signals that cause the program to terminate.  These   * Signal handler for signals that cause the program to terminate.  These
  * signals must be trapped to restore terminal modes.   * signals must be trapped to restore terminal modes.
  */   */
   /*ARGSUSED */
 static void  static void
 signal_handler(int sig)  signal_handler(int sig)
 {  {
Line 422 
Line 438 
                 if (ioctl(fileno(stdin), TIOCGWINSZ, &ws) < 0)                  if (ioctl(fileno(stdin), TIOCGWINSZ, &ws) < 0)
                         return;                          return;
                 packet_start(SSH_CMSG_WINDOW_SIZE);                  packet_start(SSH_CMSG_WINDOW_SIZE);
                 packet_put_int(ws.ws_row);                  packet_put_int((u_int)ws.ws_row);
                 packet_put_int(ws.ws_col);                  packet_put_int((u_int)ws.ws_col);
                 packet_put_int(ws.ws_xpixel);                  packet_put_int((u_int)ws.ws_xpixel);
                 packet_put_int(ws.ws_ypixel);                  packet_put_int((u_int)ws.ws_ypixel);
                 packet_send();                  packet_send();
         }          }
 }  }
Line 569 
Line 585 
 }  }
   
 static void  static void
 client_process_net_input(fd_set * readset)  client_process_net_input(fd_set *readset)
 {  {
         int len;          int len;
         char buf[8192];          char buf[8192];
Line 677 
Line 693 
 }  }
   
 static void  static void
 client_process_control(fd_set * readset)  client_process_control(fd_set *readset)
 {  {
         Buffer m;          Buffer m;
         Channel *c;          Channel *c;
Line 808 
Line 824 
                 return;                  return;
         }          }
   
         cctx = xmalloc(sizeof(*cctx));          cctx = xcalloc(1, sizeof(*cctx));
         memset(cctx, 0, sizeof(*cctx));  
         cctx->want_tty = (flags & SSHMUX_FLAG_TTY) != 0;          cctx->want_tty = (flags & SSHMUX_FLAG_TTY) != 0;
         cctx->want_subsys = (flags & SSHMUX_FLAG_SUBSYS) != 0;          cctx->want_subsys = (flags & SSHMUX_FLAG_SUBSYS) != 0;
         cctx->want_x_fwd = (flags & SSHMUX_FLAG_X11_FWD) != 0;          cctx->want_x_fwd = (flags & SSHMUX_FLAG_X11_FWD) != 0;
Line 824 
Line 839 
         env_len = MIN(env_len, 4096);          env_len = MIN(env_len, 4096);
         debug3("%s: receiving %d env vars", __func__, env_len);          debug3("%s: receiving %d env vars", __func__, env_len);
         if (env_len != 0) {          if (env_len != 0) {
                 cctx->env = xmalloc(sizeof(*cctx->env) * (env_len + 1));                  cctx->env = xcalloc(env_len + 1, sizeof(*cctx->env));
                 for (i = 0; i < env_len; i++)                  for (i = 0; i < env_len; i++)
                         cctx->env[i] = buffer_get_string(&m, &len);                          cctx->env[i] = buffer_get_string(&m, &len);
                 cctx->env[i] = NULL;                  cctx->env[i] = NULL;
Line 832 
Line 847 
   
         debug2("%s: accepted tty %d, subsys %d, cmd %s", __func__,          debug2("%s: accepted tty %d, subsys %d, cmd %s", __func__,
             cctx->want_tty, cctx->want_subsys, cmd);              cctx->want_tty, cctx->want_subsys, cmd);
           xfree(cmd);
   
         /* Gather fds from client */          /* Gather fds from client */
         new_fd[0] = mm_receive_fd(client_fd);          new_fd[0] = mm_receive_fd(client_fd);
Line 912 
Line 928 
   
         if (*s == 'h' || *s == 'H' || *s == '?') {          if (*s == 'h' || *s == 'H' || *s == '?') {
                 logit("Commands:");                  logit("Commands:");
                 logit("      -Lport:host:hostport    Request local forward");                  logit("      -L[bind_address:]port:host:hostport    "
                 logit("      -Rport:host:hostport    Request remote forward");                      "Request local forward");
                 logit("      -KRhostport             Cancel remote forward");                  logit("      -R[bind_address:]port:host:hostport    "
                       "Request remote forward");
                   logit("      -KR[bind_address:]port                 "
                       "Cancel remote forward");
                 if (!options.permit_local_command)                  if (!options.permit_local_command)
                         goto out;                          goto out;
                 logit("      !args                   Execute local command");                  logit("      !args                                  "
                       "Execute local command");
                 goto out;                  goto out;
         }          }
   
Line 978 
Line 998 
                                 goto out;                                  goto out;
                         }                          }
                 } else {                  } else {
                         channel_request_remote_forwarding(fwd.listen_host,                          if (channel_request_remote_forwarding(fwd.listen_host,
                             fwd.listen_port, fwd.connect_host,                              fwd.listen_port, fwd.connect_host,
                             fwd.connect_port);                              fwd.connect_port) < 0) {
                                   logit("Port forwarding failed.");
                                   goto out;
                           }
                 }                  }
   
                 logit("Forwarding port.");                  logit("Forwarding port.");
Line 1172 
Line 1195 
 }  }
   
 static void  static void
 client_process_input(fd_set * readset)  client_process_input(fd_set *readset)
 {  {
         int len;          int len;
         char buf[8192];          char buf[8192];
Line 1225 
Line 1248 
 }  }
   
 static void  static void
 client_process_output(fd_set * writeset)  client_process_output(fd_set *writeset)
 {  {
         int len;          int len;
         char buf[100];          char buf[100];
Line 1869 
Line 1892 
   
                 channel_request_start(id, "pty-req", 0);                  channel_request_start(id, "pty-req", 0);
                 packet_put_cstring(term != NULL ? term : "");                  packet_put_cstring(term != NULL ? term : "");
                 packet_put_int(ws.ws_col);                  packet_put_int((u_int)ws.ws_col);
                 packet_put_int(ws.ws_row);                  packet_put_int((u_int)ws.ws_row);
                 packet_put_int(ws.ws_xpixel);                  packet_put_int((u_int)ws.ws_xpixel);
                 packet_put_int(ws.ws_ypixel);                  packet_put_int((u_int)ws.ws_ypixel);
                 tio = get_saved_tio();                  tio = get_saved_tio();
                 tty_make_modes(-1, tiop != NULL ? tiop : &tio);                  tty_make_modes(-1, tiop != NULL ? tiop : &tio);
                 packet_send();                  packet_send();

Legend:
Removed from v.1.141.2.1  
changed lines
  Added in v.1.141.2.2