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

Diff for /src/usr.bin/ssh/ttymodes.c between version 1.34 and 1.35

version 1.34, 2018/07/09 21:20:26 version 1.35, 2020/10/18 11:32:02
Line 255 
Line 255 
         int r, ibaud, obaud;          int r, ibaud, obaud;
   
         if ((buf = sshbuf_new()) == NULL)          if ((buf = sshbuf_new()) == NULL)
                 fatal("%s: sshbuf_new failed", __func__);                  fatal_f("sshbuf_new failed");
   
         if (tiop == NULL) {          if (tiop == NULL) {
                 if (fd == -1) {                  if (fd == -1) {
                         debug("%s: no fd or tio", __func__);                          debug_f("no fd or tio");
                         goto end;                          goto end;
                 }                  }
                 if (tcgetattr(fd, &tio) == -1) {                  if (tcgetattr(fd, &tio) == -1) {
Line 276 
Line 276 
             (r = sshbuf_put_u32(buf, obaud)) != 0 ||              (r = sshbuf_put_u32(buf, obaud)) != 0 ||
             (r = sshbuf_put_u8(buf, TTY_OP_ISPEED)) != 0 ||              (r = sshbuf_put_u8(buf, TTY_OP_ISPEED)) != 0 ||
             (r = sshbuf_put_u32(buf, ibaud)) != 0)              (r = sshbuf_put_u32(buf, ibaud)) != 0)
                 fatal("%s: buffer error: %s", __func__, ssh_err(r));                  fatal_fr(r, "compose");
   
         /* Store values of mode flags. */          /* Store values of mode flags. */
 #define TTYCHAR(NAME, OP) \  #define TTYCHAR(NAME, OP) \
         if ((r = sshbuf_put_u8(buf, OP)) != 0 || \          if ((r = sshbuf_put_u8(buf, OP)) != 0 || \
             (r = sshbuf_put_u32(buf, tio.c_cc[NAME])) != 0) \              (r = sshbuf_put_u32(buf, tio.c_cc[NAME])) != 0) \
                 fatal("%s: buffer error: %s", __func__, ssh_err(r)); \                  fatal_fr(r, "compose %s", #NAME);
   
 #define SSH_TTYMODE_IUTF8 42  /* for SSH_BUG_UTF8TTYMODE */  #define SSH_TTYMODE_IUTF8 42  /* for SSH_BUG_UTF8TTYMODE */
   
 #define TTYMODE(NAME, FIELD, OP) \  #define TTYMODE(NAME, FIELD, OP) \
         if (OP == SSH_TTYMODE_IUTF8 && (datafellows & SSH_BUG_UTF8TTYMODE)) { \          if (OP == SSH_TTYMODE_IUTF8 && (datafellows & SSH_BUG_UTF8TTYMODE)) { \
                 debug3("%s: SSH_BUG_UTF8TTYMODE", __func__); \                  debug3_f("SSH_BUG_UTF8TTYMODE"); \
         } else if ((r = sshbuf_put_u8(buf, OP)) != 0 || \          } else if ((r = sshbuf_put_u8(buf, OP)) != 0 || \
             (r = sshbuf_put_u32(buf, ((tio.FIELD & NAME) != 0))) != 0) \              (r = sshbuf_put_u32(buf, ((tio.FIELD & NAME) != 0))) != 0) \
                 fatal("%s: buffer error: %s", __func__, ssh_err(r)); \                  fatal_fr(r, "compose %s", #NAME);
   
 #include "ttymodes.h"  #include "ttymodes.h"
   
Line 302 
Line 302 
         /* Mark end of mode data. */          /* Mark end of mode data. */
         if ((r = sshbuf_put_u8(buf, TTY_OP_END)) != 0 ||          if ((r = sshbuf_put_u8(buf, TTY_OP_END)) != 0 ||
             (r = sshpkt_put_stringb(ssh, buf)) != 0)              (r = sshpkt_put_stringb(ssh, buf)) != 0)
                 fatal("%s: packet error: %s", __func__, ssh_err(r));                  fatal_fr(r, "compose end");
         sshbuf_free(buf);          sshbuf_free(buf);
 }  }
   
Line 322 
Line 322 
         size_t len;          size_t len;
   
         if ((r = sshpkt_get_string_direct(ssh, &data, &len)) != 0)          if ((r = sshpkt_get_string_direct(ssh, &data, &len)) != 0)
                 fatal("%s: packet error: %s", __func__, ssh_err(r));                  fatal_fr(r, "parse");
         if (len == 0)          if (len == 0)
                 return;                  return;
         if ((buf = sshbuf_from(data, len)) == NULL) {          if ((buf = sshbuf_from(data, len)) == NULL) {
                 error("%s: sshbuf_from failed", __func__);                  error_f("sshbuf_from failed");
                 return;                  return;
         }          }
   
Line 342 
Line 342 
   
         while (sshbuf_len(buf) > 0) {          while (sshbuf_len(buf) > 0) {
                 if ((r = sshbuf_get_u8(buf, &opcode)) != 0)                  if ((r = sshbuf_get_u8(buf, &opcode)) != 0)
                         fatal("%s: packet error: %s", __func__, ssh_err(r));                          fatal_fr(r, "parse opcode");
                 switch (opcode) {                  switch (opcode) {
                 case TTY_OP_END:                  case TTY_OP_END:
                         goto set;                          goto set;
   
                 case TTY_OP_ISPEED:                  case TTY_OP_ISPEED:
                         if ((r = sshbuf_get_u32(buf, &baud)) != 0)                          if ((r = sshbuf_get_u32(buf, &baud)) != 0)
                                 fatal("%s: packet error: %s",                                  fatal_fr(r, "parse ispeed");
                                     __func__, ssh_err(r));  
                         if (failure != -1 &&                          if (failure != -1 &&
                             cfsetispeed(&tio, baud_to_speed(baud)) == -1)                              cfsetispeed(&tio, baud_to_speed(baud)) == -1)
                                 error("cfsetispeed failed for %d", baud);                                  error("cfsetispeed failed for %d", baud);
Line 358 
Line 357 
   
                 case TTY_OP_OSPEED:                  case TTY_OP_OSPEED:
                         if ((r = sshbuf_get_u32(buf, &baud)) != 0)                          if ((r = sshbuf_get_u32(buf, &baud)) != 0)
                                 fatal("%s: packet error: %s",                                  fatal_fr(r, "parse ospeed");
                                     __func__, ssh_err(r));  
                         if (failure != -1 &&                          if (failure != -1 &&
                             cfsetospeed(&tio, baud_to_speed(baud)) == -1)                              cfsetospeed(&tio, baud_to_speed(baud)) == -1)
                                 error("cfsetospeed failed for %d", baud);                                  error("cfsetospeed failed for %d", baud);
Line 368 
Line 366 
 #define TTYCHAR(NAME, OP) \  #define TTYCHAR(NAME, OP) \
                 case OP: \                  case OP: \
                         if ((r = sshbuf_get_u32(buf, &u)) != 0) \                          if ((r = sshbuf_get_u32(buf, &u)) != 0) \
                                 fatal("%s: packet error: %s", __func__, \                                  fatal_fr(r, "parse %s", #NAME); \
                                     ssh_err(r)); \  
                         tio.c_cc[NAME] = u; \                          tio.c_cc[NAME] = u; \
                         break;                          break;
 #define TTYMODE(NAME, FIELD, OP) \  #define TTYMODE(NAME, FIELD, OP) \
                 case OP: \                  case OP: \
                         if ((r = sshbuf_get_u32(buf, &u)) != 0) \                          if ((r = sshbuf_get_u32(buf, &u)) != 0) \
                                 fatal("%s: packet error: %s", __func__, \                                  fatal_fr(r, "parse %s", #NAME); \
                                     ssh_err(r)); \  
                         if (u) \                          if (u) \
                                 tio.FIELD |= NAME; \                                  tio.FIELD |= NAME; \
                         else \                          else \
Line 400 
Line 396 
                          */                           */
                         if (opcode > 0 && opcode < 160) {                          if (opcode > 0 && opcode < 160) {
                                 if ((r = sshbuf_get_u32(buf, NULL)) != 0)                                  if ((r = sshbuf_get_u32(buf, NULL)) != 0)
                                         fatal("%s: packet error: %s", __func__,                                          fatal_fr(r, "parse arg");
                                             ssh_err(r));  
                                 break;                                  break;
                         } else {                          } else {
                                 logit("%s: unknown opcode %d", __func__,                                  logit_f("unknown opcode %d", opcode);
                                     opcode);  
                                 goto set;                                  goto set;
                         }                          }
                 }                  }
Line 415 
Line 409 
         len = sshbuf_len(buf);          len = sshbuf_len(buf);
         sshbuf_free(buf);          sshbuf_free(buf);
         if (len > 0) {          if (len > 0) {
                 logit("%s: %zu bytes left", __func__, len);                  logit_f("%zu bytes left", len);
                 return;         /* Don't process bytes passed */                  return;         /* Don't process bytes passed */
         }          }
         if (failure == -1)          if (failure == -1)

Legend:
Removed from v.1.34  
changed lines
  Added in v.1.35