Date: Wed, 25 Aug 2021 20:46:59 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=258048 Bug ID: 258048 Summary: 'ping' option parsing broken after merging in 'ping6' code. Product: Base System Version: CURRENT Hardware: Any OS: Any Status: New Severity: Affects Only Me Priority: --- Component: bin Assignee: bugs@FreeBSD.org Reporter: firstname.lastname@example.org Created attachment 227435 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=227435&action=edit Potential Fix Overview: When ping6 was merged into ping, the option parsing was broken. During the first pass of the options, to determine ipv4 or ipv6, only options "46" are provided to getopt(). This causes getopt() to match any '4' or '6', because it believes these are the only valid options. Below are some examples of how the first pass into getopt() is interpreted: "-c6" will match 'c' as invalid (which is ignored) and '6' as ipv6 (instead of a count of 6) "-s46" will match 's' as invalid (which is ignored), '4' as ipv4, and '6' as ipv6 (instead of a size of 46). I've provided a diff that moves the option string creation to main.h and uses that for all getopt() calls. The diff also includes the following additional fixes: - Reorder the PING6ADDOPTS options alphabetically like the PING4ADDOPTS. - Add missing space after the "[-m ttl]" option the in usage() text. - Swap the "aA" with "Aa" in the ping 6 usage() text to match PING6ADDOPTS. - Add some #ifdef IPSEC around some unused declarations. Steps to Reproduce: ping -s46 127.0.0.1 ping -s46 ::1 ping -4 -c6 127.0.0.1 ping -6 -c4 ::1 ping -4 -t6 127.0.0.1 ping -6 -t4 ::1 ping -6 -t4 ::1 ping -6 -z4 -c1 ::1 ping -s6 -c1 127.0.0.1 ping -s4 -c1 ::1 Actual Results: All the "valid" command above return the following errors. "ping: -4 and -6 cannot be used simultaneously" OR "ping: IPv6 requested but IPv4 target address provided" Expected Results: ping should not interpret '4' and '6' in the values of other options as "options". Build Date & Hardware: git HEAD @ 9f7a81b133c715f649136dcd0ad004e4180c56c9 Additional Information: none -- You are receiving this mail because: You are the assignee for the bug.