Skip to content

Commit dca99f1

Browse files
committed
DHCPv6: Don't limit the hex dumps to 10 characters with -vv or more
Change the type of optlen from uint16_t to u_int to avoid: ./print-dhcp6.c: In function 'dhcp6opt_print': ./print-dhcp6.c:698:31: warning: comparison of integer expressions of different signedness: 'u_int' {aka 'unsigned int'} and 'int' [-Wsign-compare] 698 | if (i < optlen - 4) | ^ ./print-dhcp6.c:752:31: warning: comparison of integer expressions of different signedness: 'u_int' {aka 'unsigned int'} and 'int' [-Wsign-compare] 752 | if (i < optlen - 16) | ^ Add a test with -vv option, from an existing pcap. Update a test output accordingly.
1 parent 5ba1fa0 commit dca99f1

File tree

4 files changed

+38
-14
lines changed

4 files changed

+38
-14
lines changed

print-dhcp6.c

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ dhcp6opt_print(netdissect_options *ndo,
287287
const u_char *tp;
288288
u_int i;
289289
uint16_t opttype;
290-
uint16_t optlen;
290+
u_int optlen;
291291
uint8_t auth_proto;
292292
uint8_t auth_alg;
293293
uint8_t auth_rdm;
@@ -299,6 +299,7 @@ dhcp6opt_print(netdissect_options *ndo,
299299
uint8_t dh6_reconf_type;
300300
uint8_t dh6_lq_query_type;
301301
u_int first_list_value;
302+
u_int max_char;
302303

303304
if (cp == ep)
304305
return;
@@ -549,13 +550,16 @@ dhcp6opt_print(netdissect_options *ndo,
549550
break;
550551
case DH6OPT_INTERFACE_ID:
551552
case DH6OPT_SUBSCRIBER_ID:
552-
/*
553-
* Since we cannot predict the encoding, print hex dump
554-
* at most 10 characters.
555-
*/
556553
tp = (const u_char *)(dh6o + 1);
557554
ND_PRINT(" ");
558-
for (i = 0; i < optlen && i < 10; i++)
555+
/*
556+
* if ndo_vflag < 2, print hex dump up to 10 characters.
557+
*/
558+
if (ndo->ndo_vflag < 2)
559+
max_char = ND_MIN(optlen, 10);
560+
else
561+
max_char = optlen;
562+
for (i = 0; i < max_char; i++)
559563
ND_PRINT("%02x", GET_U_1(tp + i));
560564
if (i < optlen)
561565
ND_PRINT("...");
@@ -681,12 +685,17 @@ dhcp6opt_print(netdissect_options *ndo,
681685
}
682686
tp = (const u_char *)(dh6o + 1);
683687
ND_PRINT(" enterprise %u ", GET_BE_U_4(tp));
688+
tp += 4;
684689
/*
685-
* Print hex dump first 10 characters.
690+
* if ndo_vflag < 2, print hex dump up to 10 characters.
686691
*/
687-
for (i = 4; i < optlen && i < 14; i++)
692+
if (ndo->ndo_vflag < 2)
693+
max_char = ND_MIN(optlen - 4, 10);
694+
else
695+
max_char = optlen - 4;
696+
for (i = 0; i < max_char; i++)
688697
ND_PRINT("%02x", GET_U_1(tp + i));
689-
if (i < optlen)
698+
if (i < optlen - 4)
690699
ND_PRINT("...");
691700
ND_PRINT(")");
692701
break;
@@ -730,12 +739,17 @@ dhcp6opt_print(netdissect_options *ndo,
730739
}
731740
tp = (const u_char *)(dh6o + 1);
732741
ND_PRINT(" %s ", GET_IP6ADDR_STRING(tp));
742+
tp += 16;
733743
/*
734-
* Print hex dump first 10 characters.
744+
* if ndo_vflag < 2, print hex dump up to 10 characters.
735745
*/
736-
for (i = 16; i < optlen && i < 26; i++)
746+
if (ndo->ndo_vflag < 2)
747+
max_char = ND_MIN(optlen - 16, 10);
748+
else
749+
max_char = optlen - 16;
750+
for (i = 0; i < max_char; i++)
737751
ND_PRINT("%02x", GET_U_1(tp + i));
738-
if (i < optlen)
752+
if (i < optlen - 16)
739753
ND_PRINT("...");
740754
ND_PRINT(")");
741755
break;
@@ -870,7 +884,15 @@ dhcp6opt_print(netdissect_options *ndo,
870884
}
871885
if (subopt_len > 0) {
872886
ND_PRINT(" data ");
873-
for (i = 0; i < subopt_len && i < 10; i++)
887+
/*
888+
* if ndo_vflag < 2, print hex dump up
889+
* to 10 characters.
890+
*/
891+
if (ndo->ndo_vflag < 2)
892+
max_char = ND_MIN(subopt_len, 10);
893+
else
894+
max_char = subopt_len;
895+
for (i = 0; i < max_char; i++)
874896
ND_PRINT("%02x",
875897
GET_U_1(tp + i));
876898
if (i < subopt_len)

tests/TESTLIST

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ dhcpv6-domain-list dhcpv6-domain-list.pcap dhcpv6-domain-list.out -v
266266
dhcpv6-mud dhcpv6-mud.pcap dhcpv6-mud.out -v
267267
dhcpv6-rfc6355-duid-uuid dhcpv6-rfc6355-duid-uuid.pcap dhcpv6-rfc6355-duid-uuid.out -v
268268
dhcpv6-vendor-specific-information dhcpv6-vendor-specific-information.pcap dhcpv6-vendor-specific-information.out -v
269+
dhcpv6-vendor-specific-information-vv dhcpv6-vendor-specific-information.pcap dhcpv6-vendor-specific-information-vv.out -vv
269270

270271
# ZeroMQ/PGM tests
271272
# ZMTP/1.0 over TCP

tests/dhcpv4v6-rfc5970-rfc8572.out

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,4 +73,4 @@
7373
11 14:15:33.148466 IP6 (flowlabel 0x1570c, hlim 64, next-header UDP (17) payload length: 157) fe80::40d3:61ff:fe62:3810.547 > fe80::200:1ff:fe01:0.546: [udp sum ok] dhcp6 advertise (xid=654242 (IA_NA IAID:16842752 T1:0 T2:0 (IA_ADDR 1234:5678::4 pltime:18000 vltime:28800)) (client-ID hwaddr/time type 1 time 701792102 000001010000) (server-ID hwaddr/time type 1 time 701792110 42d361623810) (Bootfile-URL my-startup-config) (DNS-search-list aristanetworks.com.) (DNS-server 1234:5678::2))
7474
12 14:15:34.152941 IP6 (flowlabel 0x03f85, hlim 1, next-header UDP (17) payload length: 126) fe80::200:1ff:fe01:0.546 > ff02::1:2.547: [udp sum ok] dhcp6 request (xid=becafa (vendor-specific-info enterprise 30065 (code 1 len 6 data 417269737461))) (client-ID hwaddr/time type 1 time 701792102 000001010000) (server-ID hwaddr/time type 1 time 701792110 42d361623810) (option-request Bootfile-URL DNS-search-list DNS-server) (elapsed-time 0) (IA_NA IAID:16842752 T1:3600 T2:5400 (IA_ADDR 1234:5678::4 pltime:7200 vltime:7500)))
7575
13 14:15:34.156427 IP6 (flowlabel 0x1570c, hlim 64, next-header UDP (17) payload length: 157) fe80::40d3:61ff:fe62:3810.547 > fe80::200:1ff:fe01:0.546: [udp sum ok] dhcp6 reply (xid=becafa (IA_NA IAID:16842752 T1:0 T2:0 (IA_ADDR 1234:5678::4 pltime:7200 vltime:28800)) (client-ID hwaddr/time type 1 time 701792102 000001010000) (server-ID hwaddr/time type 1 time 701792110 42d361623810) (Bootfile-URL my-startup-config) (DNS-search-list aristanetworks.com.) (DNS-server 1234:5678::2))
76-
14 08:08:32.009292 IP6 (flowlabel 0x09903, hlim 1, next-header UDP (17) payload length: 138) fe80::200:44ff:fe01:0.546 > ff02::1:2.547: [udp sum ok] dhcp6 inf-req (xid=b5fcf (vendor-specific-info enterprise 30065 (code 1 len 44 data 4172697374613b546573...))) (client-ID hwaddr type 1 000044010000) (option-request Bootfile-URL DNS-search-list DNS-server) (elapsed-time 331) (user-class Arista;Test-Dhcpv6Discover;4.21.XX))
76+
14 08:08:32.009292 IP6 (flowlabel 0x09903, hlim 1, next-header UDP (17) payload length: 138) fe80::200:44ff:fe01:0.546 > ff02::1:2.547: [udp sum ok] dhcp6 inf-req (xid=b5fcf (vendor-specific-info enterprise 30065 (code 1 len 44 data 4172697374613b546573742d446863707636446973636f7665723b30312e30303b4853483134343235313438))) (client-ID hwaddr type 1 000044010000) (option-request Bootfile-URL DNS-search-list DNS-server) (elapsed-time 331) (user-class Arista;Test-Dhcpv6Discover;4.21.XX))
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1 23:25:55.136477 IP6 (hlim 64, next-header UDP (17) payload length: 595) fc00:502:411:1::1.546 > fc00:502:400:0:10:32:0:69.547: [udp sum ok] dhcp6 relay-fwd (linkaddr=fc00:502:411:1::1 peeraddr=fc00:502:411:1::1 (interface-ID 54d46ffa109a) (vendor-specific-info enterprise 4491 (code 38 len 4 data 01020300)) (code 39 len 6 data 54d46ffa109a))) (relay-message (dhcp6 request (xid=d98c5d (reconfigure-accept) (vendor-class) (option-request vendor-specific-info) (vendor-specific-info enterprise 4491 (code 1 len 16 data 00200021002200250026087a087b0027)) (code 2 len 3 data 45434d)) (code 3 len 12 data 45434d3a454d54413a455053)) (code 4 len 10 data 445247373930382d3533)) (code 5 len 3 data 312e30)) (code 6 len 26 data 647267373930382d5031352d31342d7633303272313231313161)) (code 7 len 5 data 322e332e31)) (code 8 len 6 data 353444343646)) (code 9 len 7 data 44524737393038)) (code 10 len 5 data 436973636f)) (code 35 len 122 data 057801010102010303010104010105010106010107010f0801100901000a01010b01180c01010d0200400e02000a0f010110040000000611010014010015013f1601011701011801041901041a01041b01201c01021d01081e01201f0110200110210102220101230100240100250101260200ff270101280100)) (code 36 len 6 data 54d46ffa109a))) (client-ID hwaddr type 1 54d46ffa109a) (server-ID hwaddr/time type 1 time 336091266 000c290f1c3b) (IA_NA IAID:1878659226 T1:0 T2:0 (IA_ADDR fc00:502:411:1::31 pltime:27000 vltime:43200) (vendor-specific-info enterprise 4491 (code 32 len 16 data fc000502040000000010003200000069)) (code 2170 len 16 data 000200040a200045000100040a200045)) (code 3 len 4 data 00000001)) (code 37 len 16 data fc000502040000000010003200000069)) (code 38 len 4 data 00000000)) (code 33 len 13 data 73616d706c65636d362e62696e)) (code 34 len 16 data fc000502040000000010003200000069)))) (elapsed-time 0))))

0 commit comments

Comments
 (0)