exterminate u_intXXX.
authorDenis Vlasenko <vda.linux@googlemail.com>
Mon, 22 Jan 2007 14:04:27 +0000 (14:04 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Mon, 22 Jan 2007 14:04:27 +0000 (14:04 -0000)
fix ping6 buglet (memset is too short), minor sync between ping and ping6

libbb/lineedit.c
networking/inetd.c
networking/ping.c
networking/ping6.c
networking/traceroute.c
networking/udhcp/dhcprelay.c

index e62975db3ae336114fc6eb4a4ea6d10fc910b147..2c849eb74815ce119edad2492b02a7a7f13336b2 100644 (file)
@@ -171,7 +171,7 @@ static void input_backward(unsigned num)
        if (cmdedit_x >= num) {
                cmdedit_x -= num;
                if (num <= 4) {
-                       do putchar('\b'); while (--num);
+                       printf("\b\b\b\b" + (4-num));
                        return;
                }
                printf("\033[%uD", num);
@@ -183,7 +183,7 @@ static void input_backward(unsigned num)
        count_y = 1 + (num / cmdedit_termw);
        cmdedit_y -= count_y;
        cmdedit_x = cmdedit_termw * count_y - num;
-       /* go to 1st col; go up; go to correct column */
+       /* go to 1st column; go up; go to correct column */
        printf("\r" "\033[%dA" "\033[%dC", count_y, cmdedit_x);
 }
 
index 218f85e53155fafd229b33e5ebfb1456e0ee1deb..c1f9918f0bcd6b9f55fc95518a1db2c48b09b0c8 100644 (file)
@@ -1707,7 +1707,7 @@ chargen_dg(int s, servtab_t *sep ATTRIBUTE_UNUSED)
  * some seventy years Bell Labs was asleep.
  */
 
-static u_int machtime(void)
+static unsigned machtime(void)
 {
        struct timeval tv;
 
@@ -1715,14 +1715,14 @@ static u_int machtime(void)
                fprintf(stderr, "Unable to get time of day\n");
                return 0L;
        }
-       return htonl((u_int) tv.tv_sec + 2208988800UL);
+       return htonl((unsigned) tv.tv_sec + 2208988800UL);
 }
 
 /* ARGSUSED */
 static void
 machtime_stream(int s, servtab_t *sep ATTRIBUTE_UNUSED)
 {
-       u_int result;
+       unsigned result;
 
        result = machtime();
        (void) write(s, (char *) &result, sizeof(result));
@@ -1732,7 +1732,7 @@ machtime_stream(int s, servtab_t *sep ATTRIBUTE_UNUSED)
 static void
 machtime_dg(int s, servtab_t *sep ATTRIBUTE_UNUSED)
 {
-       u_int result;
+       unsigned result;
        /* struct sockaddr_storage ss; */
        struct sockaddr sa;
        struct sockaddr_in *dg_sin;
index 12730bec5b440482264472740112e4c9ea744b61..d8a70334d90b0b6986c206d8e6e6eb4cdec703a1 100644 (file)
@@ -1,13 +1,15 @@
 /* vi: set sw=4 ts=4: */
 /*
- * $Id: ping.c,v 1.56 2004/03/15 08:28:48 andersen Exp $
  * Mini ping implementation for busybox
  *
  * Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
  *
  * Adapted from the ping in netkit-base 0.10:
  * Copyright (c) 1989 The Regents of the University of California.
- * Derived from software contributed to Berkeley by Mike Muuss.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Mike Muuss.
  *
  * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
  */
@@ -74,7 +76,7 @@ static void ping(const char *host)
 
        pingsock = create_icmp_socket();
 
-       memset(&pingaddr, 0, sizeof(struct sockaddr_in));
+       memset(&pingaddr, 0, sizeof(pingaddr));
 
        pingaddr.sin_family = AF_INET;
        h = xgethostbyname(host);
@@ -202,7 +204,7 @@ static void sendping(int junk)
        pkt->icmp_cksum = 0;
        pkt->icmp_seq = htons(ntransmitted); /* don't ++ here, it can be a macro */
        pkt->icmp_id = myid;
-       CLR(ntohs(pkt->icmp_seq) % MAX_DUP_CHK);
+       CLR((uint16_t)ntransmitted % MAX_DUP_CHK);
        ntransmitted++;
 
        gettimeofday((struct timeval *) &pkt->icmp_dun, NULL);
@@ -230,20 +232,20 @@ static void sendping(int junk)
 static char *icmp_type_name(int id)
 {
        switch (id) {
-       case ICMP_ECHOREPLY:            return "Echo Reply";
-       case ICMP_DEST_UNREACH:         return "Destination Unreachable";
-       case ICMP_SOURCE_QUENCH:        return "Source Quench";
-       case ICMP_REDIRECT:                     return "Redirect (change route)";
-       case ICMP_ECHO:                         return "Echo Request";
-       case ICMP_TIME_EXCEEDED:        return "Time Exceeded";
-       case ICMP_PARAMETERPROB:        return "Parameter Problem";
-       case ICMP_TIMESTAMP:            return "Timestamp Request";
-       case ICMP_TIMESTAMPREPLY:       return "Timestamp Reply";
-       case ICMP_INFO_REQUEST:         return "Information Request";
-       case ICMP_INFO_REPLY:           return "Information Reply";
-       case ICMP_ADDRESS:                      return "Address Mask Request";
-       case ICMP_ADDRESSREPLY:         return "Address Mask Reply";
-       default:                                        return "unknown ICMP type";
+       case ICMP_ECHOREPLY:      return "Echo Reply";
+       case ICMP_DEST_UNREACH:   return "Destination Unreachable";
+       case ICMP_SOURCE_QUENCH:  return "Source Quench";
+       case ICMP_REDIRECT:       return "Redirect (change route)";
+       case ICMP_ECHO:           return "Echo Request";
+       case ICMP_TIME_EXCEEDED:  return "Time Exceeded";
+       case ICMP_PARAMETERPROB:  return "Parameter Problem";
+       case ICMP_TIMESTAMP:      return "Timestamp Request";
+       case ICMP_TIMESTAMPREPLY: return "Timestamp Reply";
+       case ICMP_INFO_REQUEST:   return "Information Request";
+       case ICMP_INFO_REPLY:     return "Information Reply";
+       case ICMP_ADDRESS:        return "Address Mask Request";
+       case ICMP_ADDRESSREPLY:   return "Address Mask Reply";
+       default:                  return "unknown ICMP type";
        }
 }
 
@@ -270,7 +272,7 @@ static void unpack(char *buf, int sz, struct sockaddr_in *from)
                return;                         /* not our ping */
 
        if (icmppkt->icmp_type == ICMP_ECHOREPLY) {
-               u_int16_t recv_seq = ntohs(icmppkt->icmp_seq);
+               uint16_t recv_seq = ntohs(icmppkt->icmp_seq);
                ++nreceived;
                tp = (struct timeval *) icmppkt->icmp_data;
 
@@ -307,11 +309,12 @@ static void unpack(char *buf, int sz, struct sockaddr_in *from)
                if (dupflag)
                        printf(" (DUP!)");
                puts("");
-       } else
+       } else {
                if (icmppkt->icmp_type != ICMP_ECHO)
                        bb_error_msg("warning: got ICMP %d (%s)",
                                        icmppkt->icmp_type,
                                        icmp_type_name(icmppkt->icmp_type));
+       }
        fflush(stdout);
 }
 
@@ -326,7 +329,7 @@ static void ping(const char *host)
                xbind(pingsock, (struct sockaddr*)&sourceaddr, sizeof(sourceaddr));
        }
 
-       memset(&pingaddr, 0, sizeof(struct sockaddr_in));
+       memset(&pingaddr, 0, sizeof(pingaddr));
 
        pingaddr.sin_family = AF_INET;
        hostent = xgethostbyname(host);
@@ -339,7 +342,7 @@ static void ping(const char *host)
        setsockopt_broadcast(pingsock);
 
        /* set recv buf for broadcast pings */
-       sockopt = 48 * 1024;
+       sockopt = 48 * 1024; /* explain why 48k? */
        setsockopt(pingsock, SOL_SOCKET, SO_RCVBUF, (char *) &sockopt,
                           sizeof(sockopt));
 
index 5cb02f51a962073daca0fd9390325dd277392f7a..dec3b426a3e3beacbb8097528239e91a3cdbba3b 100644 (file)
@@ -1,6 +1,5 @@
 /* vi: set sw=4 ts=4: */
 /*
- * $Id: ping6.c,v 1.6 2004/03/15 08:28:48 andersen Exp $
  * Mini ping implementation for busybox
  *
  * Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
@@ -67,7 +66,7 @@ static void ping(const char *host)
 
        pingsock = create_icmp6_socket();
 
-       memset(&pingaddr, 0, sizeof(struct sockaddr_in));
+       memset(&pingaddr, 0, sizeof(pingaddr));
 
        pingaddr.sin6_family = AF_INET6;
        h = xgethostbyname2(host, AF_INET6);
@@ -196,7 +195,7 @@ static void sendping(int junk)
        pkt->icmp6_cksum = 0;
        pkt->icmp6_seq = htons(ntransmitted); /* don't ++ here, it can be a macro */
        pkt->icmp6_id = myid;
-       CLR(pkt->icmp6_seq % MAX_DUP_CHK);
+       CLR((uint16_t)ntransmitted % MAX_DUP_CHK);
        ntransmitted++;
 
        gettimeofday((struct timeval *) &pkt->icmp6_data8[4], NULL);
@@ -220,7 +219,7 @@ static void sendping(int junk)
        }
 }
 
-/* RFC3542 changed some definitions from RFC2292 for no good reason, whee !
+/* RFC3542 changed some definitions from RFC2292 for no good reason, whee!
  * the newer 3542 uses a MLD_ prefix where as 2292 uses ICMP6_ prefix */
 #ifndef MLD_LISTENER_QUERY
 # define MLD_LISTENER_QUERY ICMP6_MEMBERSHIP_QUERY
@@ -234,16 +233,16 @@ static void sendping(int junk)
 static char *icmp6_type_name(int id)
 {
        switch (id) {
-       case ICMP6_DST_UNREACH:         return "Destination Unreachable";
-       case ICMP6_PACKET_TOO_BIG:      return "Packet too big";
-       case ICMP6_TIME_EXCEEDED:       return "Time Exceeded";
-       case ICMP6_PARAM_PROB:          return "Parameter Problem";
-       case ICMP6_ECHO_REPLY:          return "Echo Reply";
-       case ICMP6_ECHO_REQUEST:        return "Echo Request";
-       case MLD_LISTENER_QUERY:        return "Listener Query";
-       case MLD_LISTENER_REPORT:       return "Listener Report";
-       case MLD_LISTENER_REDUCTION:    return "Listener Reduction";
-       default:                        return "unknown ICMP type";
+       case ICMP6_DST_UNREACH:      return "Destination Unreachable";
+       case ICMP6_PACKET_TOO_BIG:   return "Packet too big";
+       case ICMP6_TIME_EXCEEDED:    return "Time Exceeded";
+       case ICMP6_PARAM_PROB:       return "Parameter Problem";
+       case ICMP6_ECHO_REPLY:       return "Echo Reply";
+       case ICMP6_ECHO_REQUEST:     return "Echo Request";
+       case MLD_LISTENER_QUERY:     return "Listener Query";
+       case MLD_LISTENER_REPORT:    return "Listener Report";
+       case MLD_LISTENER_REDUCTION: return "Listener Reduction";
+       default:                     return "unknown ICMP type";
        }
 }
 
@@ -266,6 +265,7 @@ static void unpack(char *packet, int sz, struct sockaddr_in6 *from, int hoplimit
                return;                         /* not our ping */
 
        if (icmppkt->icmp6_type == ICMP6_ECHO_REPLY) {
+               uint16_t recv_seq = ntohs(icmppkt->icmp6_seq);
                ++nreceived;
                tp = (struct timeval *) &icmppkt->icmp6_data8[4];
 
@@ -282,12 +282,12 @@ static void unpack(char *packet, int sz, struct sockaddr_in6 *from, int hoplimit
                if (triptime > tmax)
                        tmax = triptime;
 
-               if (TST(icmppkt->icmp6_seq % MAX_DUP_CHK)) {
+               if (TST(recv_seq % MAX_DUP_CHK)) {
                        ++nrepeats;
                        --nreceived;
                        dupflag = 1;
                } else {
-                       SET(icmppkt->icmp6_seq % MAX_DUP_CHK);
+                       SET(recv_seq % MAX_DUP_CHK);
                        dupflag = 0;
                }
 
@@ -297,16 +297,19 @@ static void unpack(char *packet, int sz, struct sockaddr_in6 *from, int hoplimit
                printf("%d bytes from %s: icmp6_seq=%u", sz,
                           inet_ntop(AF_INET6, &pingaddr.sin6_addr,
                                                 buf, sizeof(buf)),
-                          ntohs(icmppkt->icmp6_seq));
+                          recv_seq);
                printf(" ttl=%d time=%lu.%lu ms", hoplimit,
                           triptime / 10, triptime % 10);
                if (dupflag)
                        printf(" (DUP!)");
                puts("");
-       } else
+       } else {
                if (icmppkt->icmp6_type != ICMP6_ECHO_REQUEST)
                        bb_error_msg("warning: got ICMP %d (%s)",
-                                       icmppkt->icmp6_type, icmp6_type_name(icmppkt->icmp6_type));
+                                       icmppkt->icmp6_type,
+                                       icmp6_type_name(icmppkt->icmp6_type));
+       }
+       fflush(stdout);
 }
 
 static void ping(const char *host)
@@ -321,7 +324,7 @@ static void ping(const char *host)
 
        pingsock = create_icmp6_socket();
 
-       memset(&pingaddr, 0, sizeof(struct sockaddr_in));
+       memset(&pingaddr, 0, sizeof(pingaddr));
 
        pingaddr.sin6_family = AF_INET6;
        hostent = xgethostbyname2(host, AF_INET6);
@@ -431,7 +434,7 @@ int ping6_main(int argc, char **argv)
                                "%s: invalid interface name", opt_I);
        }
 
-       myid = (int16_t)getpid();
+       myid = (int16_t) getpid();
        ping(argv[optind]);
        return EXIT_SUCCESS;
 }
index 0f3da90d6dc2cf7e3f34ac87319fe8bb6a842523..5eac6cd1e09fecbe74259b51b8ce6eebabc5a2ec 100644 (file)
@@ -268,7 +268,7 @@ struct  udpiphdr {
 struct hostinfo {
        char *name;
        int n;
-       u_int32_t *addrs;
+       uint32_t *addrs;
 };
 
 /* Data section of the probe packet */
@@ -279,7 +279,7 @@ struct outdata {
 };
 
 struct IFADDRLIST {
-       u_int32_t addr;
+       uint32_t addr;
        char device[sizeof(struct ifreq)];
 };
 
@@ -299,9 +299,9 @@ static struct icmp *outicmp;           /* last output (icmp) packet */
 
 #if ENABLE_FEATURE_TRACEROUTE_SOURCE_ROUTE
 /* Maximum number of gateways (include room for one noop) */
-#define NGATEWAYS ((int)((MAX_IPOPTLEN - IPOPT_MINOFF - 1) / sizeof(u_int32_t)))
+#define NGATEWAYS ((int)((MAX_IPOPTLEN - IPOPT_MINOFF - 1) / sizeof(uint32_t)))
 /* loose source route gateway list (including room for final destination) */
-static u_int32_t gwlist[NGATEWAYS + 1];
+static uint32_t gwlist[NGATEWAYS + 1];
 #endif
 
 static int s;                          /* receive (icmp) socket file descriptor */
@@ -429,7 +429,7 @@ ifaddrlist(struct IFADDRLIST **ipaddrp)
 
 
 static void
-setsin(struct sockaddr_in *addr_sin, u_int32_t addr)
+setsin(struct sockaddr_in *addr_sin, uint32_t addr)
 {
        memset(addr_sin, 0, sizeof(*addr_sin));
 #ifdef HAVE_SOCKADDR_SA_LEN
@@ -448,8 +448,8 @@ findsaddr(const struct sockaddr_in *to, struct sockaddr_in *from)
 {
        int i, n;
        FILE *f;
-       u_int32_t mask;
-       u_int32_t dest, tmask;
+       uint32_t mask;
+       uint32_t dest, tmask;
        struct IFADDRLIST *al;
        char buf[256], tdevice[256], device[256];
 
@@ -641,7 +641,7 @@ send_probe(int seq, int ttl, struct timeval *tp)
                int nshorts, i;
 
                sp = (uint16_t *)outip;
-               nshorts = (u_int)packlen / sizeof(uint16_t);
+               nshorts = (unsigned)packlen / sizeof(uint16_t);
                i = 0;
                printf("[ %d bytes", packlen);
                while (--nshorts >= 0) {
@@ -776,7 +776,7 @@ packet_ok(unsigned char *buf, int cc, struct sockaddr_in *from, int seq)
 #if ENABLE_FEATURE_TRACEROUTE_VERBOSE
        if (verbose) {
                int i;
-               u_int32_t *lp = (u_int32_t *)&icp->icmp_ip;
+               uint32_t *lp = (uint32_t *)&icp->icmp_ip;
 
                printf("\n%d bytes from %s to "
                       "%s: icmp type %d (%s) code %d\n",
@@ -838,7 +838,7 @@ gethostinfo(const char *host)
        struct hostent *hp;
        struct hostinfo *hi;
        char **p;
-       u_int32_t addr, *ap;
+       uint32_t addr, *ap;
 
        hi = xzalloc(sizeof(*hi));
        addr = inet_addr(host);
@@ -874,7 +874,7 @@ freehostinfo(struct hostinfo *hi)
 
 #if ENABLE_FEATURE_TRACEROUTE_SOURCE_ROUTE
 static void
-getaddr(u_int32_t *ap, const char *host)
+getaddr(uint32_t *ap, const char *host)
 {
        struct hostinfo *hi;
 
@@ -892,7 +892,7 @@ traceroute_main(int argc, char *argv[])
 
        int code, n;
        unsigned char *outp;
-       u_int32_t *ap;
+       uint32_t *ap;
        struct sockaddr_in *from = (struct sockaddr_in *)&wherefrom;
        struct sockaddr_in *to = (struct sockaddr_in *)&whereto;
        struct hostinfo *hi;
@@ -915,7 +915,7 @@ traceroute_main(int argc, char *argv[])
        int nprobes = 3;
        char *nprobes_str = NULL;
        char *waittime_str = NULL;
-       u_int pausemsecs = 0;
+       unsigned pausemsecs = 0;
        char *pausemsecs_str = NULL;
        int first_ttl = 1;
        char *first_ttl_str = NULL;
@@ -1211,7 +1211,7 @@ traceroute_main(int argc, char *argv[])
        (void)fflush(stderr);
 
        for (ttl = first_ttl; ttl <= max_ttl; ++ttl) {
-               u_int32_t lastaddr = 0;
+               uint32_t lastaddr = 0;
                int gotlastaddr = 0;
                int got_there = 0;
                int unreachable = 0;
index 78a1b5e626ce7d65defffb9099063b6940273390..418aa7cbbeacd41e5b589496866ff7837a7839f2 100644 (file)
@@ -22,7 +22,7 @@
 
 /* This list holds information about clients. The xid_* functions manipulate this list. */
 static struct xid_item {
-       u_int32_t xid;
+       uint32_t xid;
        struct sockaddr_in ip;
        int client;
        time_t timestamp;
@@ -30,7 +30,7 @@ static struct xid_item {
 } dhcprelay_xid_list = {0, {0}, 0, 0, NULL};
 
 
-static struct xid_item * xid_add(u_int32_t xid, struct sockaddr_in *ip, int client)
+static struct xid_item * xid_add(uint32_t xid, struct sockaddr_in *ip, int client)
 {
        struct xid_item *item;
 
@@ -67,7 +67,7 @@ static void xid_expire(void)
        }
 }
 
-static struct xid_item * xid_find(u_int32_t xid)
+static struct xid_item * xid_find(uint32_t xid)
 {
        struct xid_item *item = dhcprelay_xid_list.next;
        while (item != NULL) {
@@ -79,7 +79,7 @@ static struct xid_item * xid_find(u_int32_t xid)
        return NULL;
 }
 
-static void xid_del(u_int32_t xid)
+static void xid_del(uint32_t xid)
 {
        struct xid_item *item = dhcprelay_xid_list.next;
        struct xid_item *last = &dhcprelay_xid_list;