[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.55.2.3 and 1.56

version 1.55.2.3, 2006/11/08 00:44:05 version 1.56, 2005/09/13 23:40:07
Line 1 
Line 1 
 /* $OpenBSD$ */  
 /*  /*
  * Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>.   * Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>.
  *   *
Line 7 
Line 6 
  * OpenBSD project by leaving this copyright notice intact.   * OpenBSD project by leaving this copyright notice intact.
  */   */
   
 #include <sys/types.h>  #include "includes.h"
 #include <sys/socket.h>  RCSID("$OpenBSD$");
   
 #include <sys/queue.h>  #include <sys/queue.h>
 #include <sys/time.h>  #include <errno.h>
 #include <sys/resource.h>  
   
 #include <openssl/bn.h>  #include <openssl/bn.h>
   
 #include <errno.h>  
 #include <netdb.h>  
 #include <setjmp.h>  #include <setjmp.h>
 #include <stdarg.h>  
 #include <stdio.h>  
 #include <stdlib.h>  
 #include <signal.h>  
 #include <string.h>  
 #include <unistd.h>  
   
 #include "xmalloc.h"  #include "xmalloc.h"
 #include "ssh.h"  #include "ssh.h"
 #include "ssh1.h"  #include "ssh1.h"
 #include "buffer.h"  
 #include "key.h"  #include "key.h"
 #include "cipher.h"  
 #include "kex.h"  #include "kex.h"
 #include "compat.h"  #include "compat.h"
 #include "myproposal.h"  #include "myproposal.h"
 #include "packet.h"  #include "packet.h"
 #include "dispatch.h"  #include "dispatch.h"
   #include "buffer.h"
   #include "bufaux.h"
 #include "log.h"  #include "log.h"
 #include "atomicio.h"  #include "atomicio.h"
 #include "misc.h"  #include "misc.h"
Line 65 
Line 55 
   
 extern char *__progname;  extern char *__progname;
 fd_set *read_wait;  fd_set *read_wait;
 size_t read_wait_nfdset;  size_t read_wait_size;
 int ncon;  int ncon;
 int nonfatal_fatal = 0;  int nonfatal_fatal = 0;
 jmp_buf kexjmp;  jmp_buf kexjmp;
Line 139 
Line 129 
                 lb->stream = stdin;                  lb->stream = stdin;
         }          }
   
         if (!(lb->buf = malloc((lb->size = LINEBUF_SIZE)))) {          if (!(lb->buf = malloc(lb->size = LINEBUF_SIZE))) {
                 if (errfun)                  if (errfun)
                         (*errfun) ("linebuf (%s): malloc failed\n", lb->filename);                          (*errfun) ("linebuf (%s): malloc failed\n", lb->filename);
                 xfree(lb);                  xfree(lb);
Line 351 
Line 341 
         c->c_kex->kex[KEX_DH_GRP1_SHA1] = kexdh_client;          c->c_kex->kex[KEX_DH_GRP1_SHA1] = kexdh_client;
         c->c_kex->kex[KEX_DH_GRP14_SHA1] = kexdh_client;          c->c_kex->kex[KEX_DH_GRP14_SHA1] = kexdh_client;
         c->c_kex->kex[KEX_DH_GEX_SHA1] = kexgex_client;          c->c_kex->kex[KEX_DH_GEX_SHA1] = kexgex_client;
         c->c_kex->kex[KEX_DH_GEX_SHA256] = kexgex_client;  
         c->c_kex->verify_host_key = hostjump;          c->c_kex->verify_host_key = hostjump;
   
         if (!(j = setjmp(kexjmp))) {          if (!(j = setjmp(kexjmp))) {
Line 501 
Line 490 
         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) {                  switch (errno) {
Line 604 
Line 587 
                         keyprint(c, keygrab_ssh1(c));                          keyprint(c, keygrab_ssh1(c));
                         confree(s);                          confree(s);
                         return;                          return;
                           break;
                 default:                  default:
                         fatal("conread: invalid status %d", c->c_status);                          fatal("conread: invalid status %d", c->c_status);
                         break;                          break;
Line 635 
Line 619 
         } else          } else
                 seltime.tv_sec = seltime.tv_usec = 0;                  seltime.tv_sec = seltime.tv_usec = 0;
   
         r = xcalloc(read_wait_nfdset, sizeof(fd_mask));          r = xmalloc(read_wait_size);
         e = xcalloc(read_wait_nfdset, sizeof(fd_mask));          memcpy(r, read_wait, read_wait_size);
         memcpy(r, read_wait, read_wait_nfdset * sizeof(fd_mask));          e = xmalloc(read_wait_size);
         memcpy(e, read_wait, read_wait_nfdset * sizeof(fd_mask));          memcpy(e, read_wait, read_wait_size);
   
         while (select(maxfd, r, NULL, e, &seltime) == -1 &&          while (select(maxfd, r, NULL, e, &seltime) == -1 &&
             (errno == EAGAIN || errno == EINTR))              (errno == EAGAIN || errno == EINTR))
Line 802 
Line 786 
                 fatal("%s: not enough file descriptors", __progname);                  fatal("%s: not enough file descriptors", __progname);
         if (maxfd > fdlim_get(0))          if (maxfd > fdlim_get(0))
                 fdlim_set(maxfd);                  fdlim_set(maxfd);
         fdcon = xcalloc(maxfd, sizeof(con));          fdcon = xmalloc(maxfd * sizeof(con));
           memset(fdcon, 0, maxfd * sizeof(con));
   
         read_wait_nfdset = howmany(maxfd, NFDBITS);          read_wait_size = howmany(maxfd, NFDBITS) * sizeof(fd_mask);
         read_wait = xcalloc(read_wait_nfdset, sizeof(fd_mask));          read_wait = xmalloc(read_wait_size);
           memset(read_wait, 0, read_wait_size);
   
         if (fopt_count) {          if (fopt_count) {
                 Linebuf *lb;                  Linebuf *lb;

Legend:
Removed from v.1.55.2.3  
changed lines
  Added in v.1.56