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

Diff for /src/usr.bin/ssh/ssh-keyscan.c between version 1.52.2.2 and 1.53

version 1.52.2.2, 2006/02/03 02:53:45 version 1.53, 2005/04/28 10:17:56
Line 167 
Line 167 
 static char *  static char *
 Linebuf_getline(Linebuf * lb)  Linebuf_getline(Linebuf * lb)
 {  {
         size_t n = 0;          int n = 0;
         void *p;          void *p;
   
         lb->lineno++;          lb->lineno++;
Line 484 
Line 484 
 static void  static void
 congreet(int s)  congreet(int s)
 {  {
         int n = 0, remote_major = 0, remote_minor = 0;          int remote_major = 0, remote_minor = 0, n = 0;
         char buf[256], *cp;          char buf[256], *cp;
         char remote_version[sizeof buf];          char remote_version[sizeof buf];
         size_t bufsiz;          size_t bufsiz;
         con *c = &fdcon[s];          con *c = &fdcon[s];
   
         for (;;) {          bufsiz = sizeof(buf);
                 memset(buf, '\0', sizeof(buf));          cp = buf;
                 bufsiz = sizeof(buf);          while (bufsiz-- && (n = atomicio(read, s, cp, 1)) == 1 && *cp != '\n') {
                 cp = buf;                  if (*cp == '\r')
                 while (bufsiz-- &&                          *cp = '\n';
                     (n = atomicio(read, s, cp, 1)) == 1 && *cp != '\n') {                  cp++;
                         if (*cp == '\r')  
                                 *cp = '\n';  
                         cp++;  
                 }  
                 if (n != 1 || strncmp(buf, "SSH-", 4) == 0)  
                         break;  
         }          }
         if (n == 0) {          if (n < 0) {
                 switch (errno) {                  if (errno != ECONNREFUSED)
                 case EPIPE:  
                         error("%s: Connection closed by remote host", c->c_name);  
                         break;  
                 case ECONNREFUSED:  
                         break;  
                 default:  
                         error("read (%s): %s", c->c_name, strerror(errno));                          error("read (%s): %s", c->c_name, strerror(errno));
                         break;  
                 }  
                 conrecycle(s);                  conrecycle(s);
                 return;                  return;
         }          }
           if (n == 0) {
                   error("%s: Connection closed by remote host", c->c_name);
                   conrecycle(s);
                   return;
           }
         if (*cp != '\n' && *cp != '\r') {          if (*cp != '\n' && *cp != '\r') {
                 error("%s: bad greeting", c->c_name);                  error("%s: bad greeting", c->c_name);
                 confree(s);                  confree(s);
Line 543 
Line 534 
         n = snprintf(buf, sizeof buf, "SSH-%d.%d-OpenSSH-keyscan\r\n",          n = snprintf(buf, sizeof buf, "SSH-%d.%d-OpenSSH-keyscan\r\n",
             c->c_keytype == KT_RSA1? PROTOCOL_MAJOR_1 : PROTOCOL_MAJOR_2,              c->c_keytype == KT_RSA1? PROTOCOL_MAJOR_1 : PROTOCOL_MAJOR_2,
             c->c_keytype == KT_RSA1? PROTOCOL_MINOR_1 : PROTOCOL_MINOR_2);              c->c_keytype == KT_RSA1? PROTOCOL_MINOR_1 : PROTOCOL_MINOR_2);
         if (n < 0 || (size_t)n >= sizeof(buf)) {          if (n == -1 || n >= sizeof buf) {
                 error("snprintf: buffer too small");                  error("snprintf: buffer too small");
                 confree(s);                  confree(s);
                 return;                  return;
         }          }
         if (atomicio(vwrite, s, buf, n) != (size_t)n) {          if (atomicio(vwrite, s, buf, n) != n) {
                 error("write (%s): %s", c->c_name, strerror(errno));                  error("write (%s): %s", c->c_name, strerror(errno));
                 confree(s);                  confree(s);
                 return;                  return;
Line 566 
Line 557 
 conread(int s)  conread(int s)
 {  {
         con *c = &fdcon[s];          con *c = &fdcon[s];
         size_t n;          int n;
   
         if (c->c_status == CS_CON) {          if (c->c_status == CS_CON) {
                 congreet(s);                  congreet(s);
                 return;                  return;
         }          }
         n = atomicio(read, s, c->c_data + c->c_off, c->c_len - c->c_off);          n = atomicio(read, s, c->c_data + c->c_off, c->c_len - c->c_off);
         if (n == 0) {          if (n < 0) {
                 error("read (%s): %s", c->c_name, strerror(errno));                  error("read (%s): %s", c->c_name, strerror(errno));
                 confree(s);                  confree(s);
                 return;                  return;
Line 705 
Line 696 
         extern char *optarg;          extern char *optarg;
   
         TAILQ_INIT(&tq);          TAILQ_INIT(&tq);
   
         /* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */  
         sanitise_stdfd();  
   
         if (argc <= 1)          if (argc <= 1)
                 usage();                  usage();

Legend:
Removed from v.1.52.2.2  
changed lines
  Added in v.1.53