]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-rx.c
Add Ananth Suryanarayana, for his print-bgp.c changes.
[tcpdump] / print-rx.c
index 5daaf7e00211d7891c85625b0c3bc4db2bf2b81e..23f1d9e0f87db217ae2dc0c24c6422942209f6b2 100644 (file)
@@ -34,7 +34,7 @@
 
 #ifndef lint
 static const char rcsid[] _U_ =
-    "@(#) $Header: /tcpdump/master/tcpdump/print-rx.c,v 1.37 2003-11-16 09:36:36 guy Exp $";
+    "@(#) $Header: /tcpdump/master/tcpdump/print-rx.c,v 1.39 2007-06-15 19:43:39 guy Exp $";
 #endif
 
 #ifdef HAVE_CONFIG_H
@@ -1013,6 +1013,7 @@ acl_print(u_char *s, int maxsize, u_char *end)
        int pos, neg, acl;
        int n, i;
        char *user;
+       char fmt[1024];
 
        if ((user = (char *)malloc(maxsize)) == NULL)
                return;
@@ -1046,7 +1047,8 @@ acl_print(u_char *s, int maxsize, u_char *end)
                printf("a");
 
        for (i = 0; i < pos; i++) {
-               if (sscanf((char *) s, "%s %d\n%n", user, &acl, &n) != 2)
+               snprintf(fmt, sizeof(fmt), "%%%ds %%d\n%%n", maxsize - 1);
+               if (sscanf((char *) s, fmt, user, &acl, &n) != 2)
                        goto finish;
                s += n;
                printf(" +{");
@@ -1059,7 +1061,8 @@ acl_print(u_char *s, int maxsize, u_char *end)
        }
 
        for (i = 0; i < neg; i++) {
-               if (sscanf((char *) s, "%s %d\n%n", user, &acl, &n) != 2)
+               snprintf(fmt, sizeof(fmt), "%%%ds %%d\n%%n", maxsize - 1);
+               if (sscanf((char *) s, fmt, user, &acl, &n) != 2)
                        goto finish;
                s += n;
                printf(" -{");
@@ -2299,6 +2302,7 @@ rx_ack_print(register const u_char *bp, int length)
 {
        struct rx_ackPacket *rxa;
        int i, start, last;
+       u_int32_t firstPacket;
 
        if (length < (int)sizeof(struct rx_header))
                return;
@@ -2327,8 +2331,9 @@ rx_ack_print(register const u_char *bp, int length)
                       (int) EXTRACT_16BITS(&rxa->bufferSpace),
                       (int) EXTRACT_16BITS(&rxa->maxSkew));
 
+       firstPacket = EXTRACT_32BITS(&rxa->firstPacket);
        printf(" first %d serial %d reason %s",
-              EXTRACT_32BITS(&rxa->firstPacket), EXTRACT_32BITS(&rxa->serial),
+              firstPacket, EXTRACT_32BITS(&rxa->serial),
               tok2str(rx_ack_reasons, "#%d", (int) rxa->reason));
 
        /*
@@ -2371,7 +2376,7 @@ rx_ack_print(register const u_char *bp, int length)
 
                                if (last == -2) {
                                        printf(" acked %d",
-                                              rxa->firstPacket + i);
+                                              firstPacket + i);
                                        start = i;
                                }
 
@@ -2385,7 +2390,7 @@ rx_ack_print(register const u_char *bp, int length)
                                 */
 
                                else if (last != i - 1) {
-                                       printf(",%d", rxa->firstPacket + i);
+                                       printf(",%d", firstPacket + i);
                                        start = i;
                                }
 
@@ -2411,7 +2416,7 @@ rx_ack_print(register const u_char *bp, int length)
                                 * range.
                                 */
                        } else if (last == i - 1 && start != last)
-                               printf("-%d", rxa->firstPacket + i - 1);
+                               printf("-%d", firstPacket + i - 1);
 
                /*
                 * So, what's going on here?  We ran off the end of the
@@ -2425,7 +2430,7 @@ rx_ack_print(register const u_char *bp, int length)
                 */
 
                if (last == i - 1 && start != last)
-                       printf("-%d", rxa->firstPacket + i - 1);
+                       printf("-%d", firstPacket + i - 1);
 
                /*
                 * Same as above, just without comments
@@ -2435,18 +2440,18 @@ rx_ack_print(register const u_char *bp, int length)
                        if (rxa->acks[i] == RX_ACK_TYPE_NACK) {
                                if (last == -2) {
                                        printf(" nacked %d",
-                                              rxa->firstPacket + i);
+                                              firstPacket + i);
                                        start = i;
                                } else if (last != i - 1) {
-                                       printf(",%d", rxa->firstPacket + i);
+                                       printf(",%d", firstPacket + i);
                                        start = i;
                                }
                                last = i;
                        } else if (last == i - 1 && start != last)
-                               printf("-%d", rxa->firstPacket + i - 1);
+                               printf("-%d", firstPacket + i - 1);
 
                if (last == i - 1 && start != last)
-                       printf("-%d", rxa->firstPacket + i - 1);
+                       printf("-%d", firstPacket + i - 1);
 
                bp += rxa->nAcks;
        }