Diff for /ansh/src/utils.c between versions 1.1.1.1.2.11 and 1.1.1.1.2.14

version 1.1.1.1.2.11, 2011/10/14 12:03:10 version 1.1.1.1.2.14, 2011/10/17 09:28:19
Line 206  icmpRecv(int s, u_int * __restrict seq, u_short * __re Line 206  icmpRecv(int s, u_int * __restrict seq, u_short * __re
                         VERB(3) LOG("Channel SECURED:: Plain text communication not supported at this moment ...");                          VERB(3) LOG("Channel SECURED:: Plain text communication not supported at this moment ...");
                         return ANSH_FLG_ERR;                          return ANSH_FLG_ERR;
                 }                  }
                   if (ntohl(hdr->ansh_nonce) != *crypted)
                           VERB(4) LOG("Detect change of nonce from %x to %x", *crypted, ntohl(hdr->ansh_nonce));
   
                 *crypted = ntohl(hdr->ansh_nonce);                  *crypted = ntohl(hdr->ansh_nonce);
         }          }
Line 285  icmpSend(int s, u_int seq, u_short id, char flg, u_int Line 287  icmpSend(int s, u_int seq, u_short id, char flg, u_int
 static int  static int
 _pkt_Send(int s, u_int seq, char flg, u_int crypted, u_char *data, int datlen, struct io_ether_addr *ea)  _pkt_Send(int s, u_int seq, char flg, u_int crypted, u_char *data, int datlen, struct io_ether_addr *ea)
 {  {
        u_char *pos, buf[USHRT_MAX] = { 0 };        u_char *pos, *str, buf[USHRT_MAX] = { 0 };
         struct ether_header *e = (struct ether_header*) buf;          struct ether_header *e = (struct ether_header*) buf;
         struct ansh_hdr *hdr;          struct ansh_hdr *hdr;
         int ret = 0;          int ret = 0;
Line 301  _pkt_Send(int s, u_int seq, char flg, u_int crypted, u Line 303  _pkt_Send(int s, u_int seq, char flg, u_int crypted, u
   
         memcpy(pos, data, datlen);          memcpy(pos, data, datlen);
   
           if (Crypted) {
                   str = cryptBuffer(pos, datlen, Crypted);
                   if (str) {
                           memcpy(pos, str, datlen);
                           free(str);
                   }
           }
   
         hdr->ansh_ver = ANSH_VERSION;          hdr->ansh_ver = ANSH_VERSION;
         hdr->ansh_flg = flg;          hdr->ansh_flg = flg;
         hdr->ansh_len = htons(datlen + sizeof(struct ansh_hdr));          hdr->ansh_len = htons(datlen + sizeof(struct ansh_hdr));
Line 352  _pkt_Recv(u_char * __restrict buf, int rlen, u_int * _ Line 362  _pkt_Recv(u_char * __restrict buf, int rlen, u_int * _
         struct bpf_hdr *bpf;          struct bpf_hdr *bpf;
         struct ansh_hdr *hdr;          struct ansh_hdr *hdr;
         u_int crc;          u_int crc;
           u_char *str;
   
         if (rlen < (sizeof(struct bpf_hdr) + ETHER_HDR_LEN + sizeof(struct ansh_hdr))) {          if (rlen < (sizeof(struct bpf_hdr) + ETHER_HDR_LEN + sizeof(struct ansh_hdr))) {
                 VERB(1) LOG("Discard packet too short %d ...", rlen);                  VERB(1) LOG("Discard packet too short %d ...", rlen);
Line 384  _pkt_Recv(u_char * __restrict buf, int rlen, u_int * _ Line 395  _pkt_Recv(u_char * __restrict buf, int rlen, u_int * _
                         VERB(3) LOG("Channel SECURED:: Plain text communication not supported at this moment ...");                          VERB(3) LOG("Channel SECURED:: Plain text communication not supported at this moment ...");
                         return ANSH_FLG_ERR;                          return ANSH_FLG_ERR;
                 }                  }
                   if (ntohl(hdr->ansh_nonce) != *crypted)
                           VERB(4) LOG("Detect change of nonce from %x to %x", *crypted, ntohl(hdr->ansh_nonce));
   
                 *crypted = ntohl(hdr->ansh_nonce);                  *crypted = ntohl(hdr->ansh_nonce);
         }          }
Line 400  _pkt_Recv(u_char * __restrict buf, int rlen, u_int * _ Line 413  _pkt_Recv(u_char * __restrict buf, int rlen, u_int * _
         /* select data */          /* select data */
         if (data) {          if (data) {
                 *datlen = ntohs(hdr->ansh_len) - sizeof(struct ansh_hdr);                  *datlen = ntohs(hdr->ansh_len) - sizeof(struct ansh_hdr);
                   if (Crypted) {
                           str = cryptBuffer(buf + bpf->bh_hdrlen + ETHER_HDR_LEN + sizeof(struct ansh_hdr), 
                                           *datlen, Crypted);
                           if (str) {
                                   memcpy(buf + bpf->bh_hdrlen + ETHER_HDR_LEN + sizeof(struct ansh_hdr), 
                                                   str, *datlen);
                                   free(str);
                           }
                   }
   
                 memcpy(data, buf + bpf->bh_hdrlen + ETHER_HDR_LEN + sizeof(struct ansh_hdr), *datlen);                  memcpy(data, buf + bpf->bh_hdrlen + ETHER_HDR_LEN + sizeof(struct ansh_hdr), *datlen);
         }          }
   
Line 524  stopProcess(sched_root_task_t * __restrict root, proc_ Line 547  stopProcess(sched_root_task_t * __restrict root, proc_
                 if (p->proc_pid == pid) {                  if (p->proc_pid == pid) {
                         break;                          break;
                 }                  }
           VERB(3) LOG("pid=%d found=%p\n", pid, p);
         if (!p)          if (!p)
                 return 1;                  return 1;
   
         ioFreePTY(p->proc_pty, p->proc_ttyname);          ioFreePTY(p->proc_pty, p->proc_ttyname);
        schedCancelby(root, NULL, CRITERIA_FD, (void*) ((intptr_t) p->proc_pty), NULL);        if (p->proc_pty)
                 schedCancelby(root, NULL, CRITERIA_FD, (void*) ((intptr_t) p->proc_pty), NULL);
   
           p->proc_pty = 0;
         p->proc_pid = 0;          p->proc_pid = 0;
         p->proc_seq = 0;          p->proc_seq = 0;
         p->proc_flg = ANSH_FLG_EOF;          p->proc_flg = ANSH_FLG_EOF;

Removed from v.1.1.1.1.2.11  
changed lines
  Added in v.1.1.1.1.2.14


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