Diff for /ansh/src/ansh3.c between versions 1.2.2.1 and 1.2.2.2

version 1.2.2.1, 2011/10/31 09:46:18 version 1.2.2.2, 2011/10/31 15:49:37
Line 73  Usage() Line 73  Usage()
 int  int
 main(int argc, char **argv)  main(int argc, char **argv)
 {  {
        struct sockaddr sa = { 0 }, *ba = NULL;        io_sockaddr_t sa, ba;
        struct sockaddr_in *sin4; 
        struct sockaddr_in6 *sin6; 
         struct hostent *host;          struct hostent *host;
         char ch;          char ch;
         int h, len;          int h, len;
         u_short id = ANSH_ID;          u_short id = ANSH_ID;
   
           memset(&sa, 0, sizeof sa);
           memset(&ba, 0, sizeof ba);
   
         srandomdev();          srandomdev();
         do {          do {
                 Crypted = (u_int) random() % UINT_MAX;                  Crypted = (u_int) random() % UINT_MAX;
Line 99  main(int argc, char **argv) Line 100  main(int argc, char **argv)
                                 }                                  }
                                 switch (host->h_addrtype) {                                  switch (host->h_addrtype) {
                                         case AF_INET:                                          case AF_INET:
                                                ba = malloc(sizeof(struct sockaddr_in));                                                ba.sin.sin_len = sizeof(struct sockaddr_in);
                                                if (!ba) {                                                ba.sin.sin_family = AF_INET;
                                                        printf("Error:: malloc() #%d - %s ...\n",                                                 memcpy(&ba.sin.sin_addr.s_addr, host->h_addr, host->h_length);
                                                                        errno, strerror(errno)); 
                                                        return 1; 
                                                } else { 
                                                        memset(ba, 0, sizeof(struct sockaddr_in)); 
                                                        sin4 = (struct sockaddr_in*) ba; 
                                                } 
                                                sin4->sin_len = sizeof(struct sockaddr_in); 
                                                sin4->sin_family = AF_INET; 
                                                memcpy(&sin4->sin_addr.s_addr, host->h_addr, host->h_length); 
                                                 break;                                                  break;
                                         case AF_INET6:                                          case AF_INET6:
                                                ba = malloc(sizeof(struct sockaddr_in6));                                                ba.sin6.sin6_len = sizeof(struct sockaddr_in6);
                                                if (!ba) {                                                ba.sin6.sin6_family = AF_INET6;
                                                        printf("Error:: malloc() #%d - %s ...\n",                                                 memcpy(&ba.sin6.sin6_addr.s6_addr, host->h_addr, host->h_length);
                                                                        errno, strerror(errno)); 
                                                        return 1; 
                                                } else { 
                                                        memset(ba, 0, sizeof(struct sockaddr_in6)); 
                                                        sin6 = (struct sockaddr_in6*) ba; 
                                                } 
                                                sin6->sin6_len = sizeof(struct sockaddr_in6); 
                                                sin6->sin6_family = AF_INET6; 
                                                memcpy(&sin6->sin6_addr.s6_addr, host->h_addr, host->h_length); 
                                                 break;                                                  break;
                                         default:                                          default:
                                                 printf("Error:: Unknown address type %d !!!\n", host->h_addrtype);                                                  printf("Error:: Unknown address type %d !!!\n", host->h_addrtype);
Line 155  main(int argc, char **argv) Line 138  main(int argc, char **argv)
         argv += optind;          argv += optind;
         if (!argc) {          if (!argc) {
                 printf("Error:: not specified address for connect ...\n");                  printf("Error:: not specified address for connect ...\n");
                 if (ba)  
                         free(ba);  
                 return 1;                  return 1;
         }          }
   
Line 164  main(int argc, char **argv) Line 145  main(int argc, char **argv)
         if (!host) {          if (!host) {
                 printf("Error:: in bind address '%s' #%d - %s\n",                  printf("Error:: in bind address '%s' #%d - %s\n",
                                 argv[0], h_errno, hstrerror(h_errno));                                  argv[0], h_errno, hstrerror(h_errno));
                 if (ba)  
                         free(ba);  
                 return 1;                  return 1;
         }          }
         switch (host->h_addrtype) {          switch (host->h_addrtype) {
                 case AF_INET:                  case AF_INET:
                        sin4 = (struct sockaddr_in*) &sa;                        sa.sin.sin_len = sizeof(struct sockaddr_in);
                        sin4->sin_len = sizeof(struct sockaddr_in);                        sa.sin.sin_family = AF_INET;
                        sin4->sin_family = AF_INET;                        memcpy(&sa.sin.sin_addr.s_addr, host->h_addr, host->h_length);
                        memcpy(&sin4->sin_addr.s_addr, host->h_addr, host->h_length); 
                         break;                          break;
                 case AF_INET6:                  case AF_INET6:
                        sin6 = (struct sockaddr_in6*) &sa;                        sa.sin6.sin6_len = sizeof(struct sockaddr_in6);
                        sin6->sin6_len = sizeof(struct sockaddr_in6);                        sa.sin6.sin6_family = AF_INET6;
                        sin6->sin6_family = AF_INET6;                        memcpy(&sa.sin6.sin6_addr.s6_addr, host->h_addr, host->h_length);
                        memcpy(&sin6->sin6_addr.s6_addr, host->h_addr, host->h_length); 
                         break;                          break;
                 default:                  default:
                         printf("Error:: Unknown address type %d !!!\n", host->h_addrtype);                          printf("Error:: Unknown address type %d !!!\n", host->h_addrtype);
                         if (ba)  
                                 free(ba);  
                         return 1;                          return 1;
         }          }
   
        h = PrepareL3(ba, &len);        h = PrepareL3(&ba, &len);
         if (h == -1) {          if (h == -1) {
                 printf("Error:: Descriptor not opened ... \n");                  printf("Error:: Descriptor not opened ... \n");
                 if (ba)  
                         free(ba);  
                 return 1;                  return 1;
         }          }
   
Line 200  main(int argc, char **argv) Line 173  main(int argc, char **argv)
   
         VERB(1) printf("\r\nFinish client.\r\n");          VERB(1) printf("\r\nFinish client.\r\n");
         close(h);          close(h);
         if (ba)  
                 free(ba);  
         return 0;          return 0;
 }  }

Removed from v.1.2.2.1  
changed lines
  Added in v.1.2.2.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>