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

Diff for /src/usr.bin/ssh/ssh-agent.c between version 1.108.2.1 and 1.108.2.2

version 1.108.2.1, 2003/09/16 20:50:44 version 1.108.2.2, 2004/03/04 18:18:16
Line 175 
Line 175 
         p = read_passphrase(prompt, RP_ALLOW_EOF);          p = read_passphrase(prompt, RP_ALLOW_EOF);
         if (p != NULL) {          if (p != NULL) {
                 /*                  /*
                  * Accept empty responses and responses consisting                   * Accept empty responses and responses consisting
                  * of the word "yes" as affirmative.                   * of the word "yes" as affirmative.
                  */                   */
                 if (*p == '\0' || *p == '\n' || strcasecmp(p, "yes") == 0)                  if (*p == '\0' || *p == '\n' || strcasecmp(p, "yes") == 0)
Line 780 
Line 780 
 static void  static void
 new_socket(sock_type type, int fd)  new_socket(sock_type type, int fd)
 {  {
         u_int i, old_alloc;          u_int i, old_alloc, new_alloc;
   
         if (fcntl(fd, F_SETFL, O_NONBLOCK) < 0)          if (fcntl(fd, F_SETFL, O_NONBLOCK) < 0)
                 error("fcntl O_NONBLOCK: %s", strerror(errno));                  error("fcntl O_NONBLOCK: %s", strerror(errno));
Line 791 
Line 791 
         for (i = 0; i < sockets_alloc; i++)          for (i = 0; i < sockets_alloc; i++)
                 if (sockets[i].type == AUTH_UNUSED) {                  if (sockets[i].type == AUTH_UNUSED) {
                         sockets[i].fd = fd;                          sockets[i].fd = fd;
                         sockets[i].type = type;  
                         buffer_init(&sockets[i].input);                          buffer_init(&sockets[i].input);
                         buffer_init(&sockets[i].output);                          buffer_init(&sockets[i].output);
                         buffer_init(&sockets[i].request);                          buffer_init(&sockets[i].request);
                           sockets[i].type = type;
                         return;                          return;
                 }                  }
         old_alloc = sockets_alloc;          old_alloc = sockets_alloc;
         sockets_alloc += 10;          new_alloc = sockets_alloc + 10;
         if (sockets)          if (sockets)
                 sockets = xrealloc(sockets, sockets_alloc * sizeof(sockets[0]));                  sockets = xrealloc(sockets, new_alloc * sizeof(sockets[0]));
         else          else
                 sockets = xmalloc(sockets_alloc * sizeof(sockets[0]));                  sockets = xmalloc(new_alloc * sizeof(sockets[0]));
         for (i = old_alloc; i < sockets_alloc; i++)          for (i = old_alloc; i < new_alloc; i++)
                 sockets[i].type = AUTH_UNUSED;                  sockets[i].type = AUTH_UNUSED;
         sockets[old_alloc].type = type;          sockets_alloc = new_alloc;
         sockets[old_alloc].fd = fd;          sockets[old_alloc].fd = fd;
         buffer_init(&sockets[old_alloc].input);          buffer_init(&sockets[old_alloc].input);
         buffer_init(&sockets[old_alloc].output);          buffer_init(&sockets[old_alloc].output);
         buffer_init(&sockets[old_alloc].request);          buffer_init(&sockets[old_alloc].request);
           sockets[old_alloc].type = type;
 }  }
   
 static int  static int
Line 944 
Line 945 
 }  }
   
 static void  static void
 cleanup_socket(void *p)  cleanup_socket(void)
 {  {
         if (socket_name[0])          if (socket_name[0])
                 unlink(socket_name);                  unlink(socket_name);
Line 952 
Line 953 
                 rmdir(socket_dir);                  rmdir(socket_dir);
 }  }
   
 static void  void
 cleanup_exit(int i)  cleanup_exit(int i)
 {  {
         cleanup_socket(NULL);          cleanup_socket();
         exit(i);          _exit(i);
 }  }
   
 static void  static void
 cleanup_handler(int sig)  cleanup_handler(int sig)
 {  {
         cleanup_socket(NULL);          cleanup_socket();
         _exit(2);          _exit(2);
 }  }
   
Line 1086 
Line 1087 
   
         if (agentsocket == NULL) {          if (agentsocket == NULL) {
                 /* Create private directory for agent socket */                  /* Create private directory for agent socket */
                 strlcpy(socket_dir, "/tmp/ssh-XXXXXXXX", sizeof socket_dir);                  strlcpy(socket_dir, "/tmp/ssh-XXXXXXXXXX", sizeof socket_dir);
                 if (mkdtemp(socket_dir) == NULL) {                  if (mkdtemp(socket_dir) == NULL) {
                         perror("mkdtemp: private socket dir");                          perror("mkdtemp: private socket dir");
                         exit(1);                          exit(1);
Line 1115 
Line 1116 
                 perror("bind");                  perror("bind");
                 cleanup_exit(1);                  cleanup_exit(1);
         }          }
         if (listen(sock, 128) < 0) {          if (listen(sock, SSH_LISTEN_BACKLOG) < 0) {
                 perror("listen");                  perror("listen");
                 cleanup_exit(1);                  cleanup_exit(1);
         }          }
Line 1184 
Line 1185 
         }          }
   
 skip:  skip:
         fatal_add_cleanup(cleanup_socket, NULL);  
         new_socket(AUTH_SOCKET, sock);          new_socket(AUTH_SOCKET, sock);
         if (ac > 0) {          if (ac > 0) {
                 signal(SIGALRM, check_parent_exists);                  signal(SIGALRM, check_parent_exists);

Legend:
Removed from v.1.108.2.1  
changed lines
  Added in v.1.108.2.2