]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-cdp.c
Use more the EXTRACT_8BITS() macro to fetch a one-byte value (22/n)
[tcpdump] / print-cdp.c
index 9b12e413c830de0f918dda58f11b891b4adab502..586a5ec8ecbd50985158dff09d869d3e41c42cc1 100644 (file)
@@ -105,7 +105,7 @@ cdp_print(netdissect_options *ndo,
        tptr = pptr; /* temporary pointer */
 
        ND_TCHECK2(*tptr, CDP_HEADER_LEN);
-       ND_PRINT((ndo, "CDPv%u, ttl: %us", *(tptr + CDP_HEADER_VERSION_OFFSET),
+       ND_PRINT((ndo, "CDPv%u, ttl: %us", EXTRACT_8BITS((tptr + CDP_HEADER_VERSION_OFFSET)),
                                           *(tptr + CDP_HEADER_TTL_OFFSET)));
        if (ndo->ndo_vflag)
                ND_PRINT((ndo, ", checksum: 0x%04x (unverified), length %u", EXTRACT_BE_16BITS(tptr + CDP_HEADER_CHECKSUM_OFFSET), length));
@@ -170,7 +170,7 @@ cdp_print(netdissect_options *ndo,
                    case 0x05: /* Version */
                        ND_PRINT((ndo, "\n\t  "));
                        for (i=0;i<len;i++) {
-                           j = *(tptr+i);
+                           j = EXTRACT_8BITS(tptr + i);
                            if (j == '\n') /* lets rework the version string to
                                              get a nice indentation */
                                ND_PRINT((ndo, "\n\t  "));
@@ -211,7 +211,7 @@ cdp_print(netdissect_options *ndo,
                    case 0x0e: /* ATA-186 VoIP VLAN request - incomplete doc. */
                        if (len < 3)
                            goto trunc;
-                       ND_PRINT((ndo, "app %d, vlan %d", *(tptr), EXTRACT_BE_16BITS(tptr + 1)));
+                       ND_PRINT((ndo, "app %d, vlan %d", EXTRACT_8BITS((tptr)), EXTRACT_BE_16BITS(tptr + 1)));
                        break;
                    case 0x10: /* ATA-186 VoIP VLAN assignment - incomplete doc. */
                        ND_PRINT((ndo, "%1.2fW", cdp_get_number(tptr, len) / 1000.0));
@@ -302,7 +302,7 @@ cdp_print_addr(netdissect_options *ndo,
                ND_TCHECK2(p[pl], 2);
                if (p + pl + 2 > endp)
                        goto trunc;
-               al = EXTRACT_BE_16BITS(&p[pl]); /* address length */
+               al = EXTRACT_BE_16BITS(p + pl); /* address length */
 
                if (pt == PT_NLPID && pl == 1 && *p == NLPID_IP && al == 4) {
                        /*
@@ -341,9 +341,11 @@ cdp_print_addr(netdissect_options *ndo,
                        ND_TCHECK2(*p, pl);
                        if (p + pl > endp)
                                goto trunc;
-                       ND_PRINT((ndo, "pt=0x%02x, pl=%d, pb=", *(p - 2), pl));
-                       while (pl-- > 0)
-                               ND_PRINT((ndo, " %02x", *p++));
+                       ND_PRINT((ndo, "pt=0x%02x, pl=%d, pb=", EXTRACT_8BITS((p - 2)), pl));
+                       while (pl-- > 0) {
+                               ND_PRINT((ndo, " %02x", EXTRACT_8BITS(p)));
+                               p++;
+                       }
                        ND_TCHECK2(*p, 2);
                        if (p + 2 > endp)
                                goto trunc;
@@ -352,8 +354,10 @@ cdp_print_addr(netdissect_options *ndo,
                        ND_TCHECK2(*p, al);
                        if (p + al > endp)
                                goto trunc;
-                       while (al-- > 0)
-                               ND_PRINT((ndo, " %02x", *p++));
+                       while (al-- > 0) {
+                               ND_PRINT((ndo, " %02x", EXTRACT_8BITS(p)));
+                               p++;
+                       }
                }
                num--;
                if (num)
@@ -396,7 +400,7 @@ static unsigned long cdp_get_number(const u_char * p, int l)
     unsigned long res=0;
     while( l>0 )
     {
-       res = (res<<8) + *p;
+       res = (res<<8) + EXTRACT_8BITS(p);
        p++; l--;
     }
     return res;