FreeBSD Bugzilla – Attachment 227435 Details for
Bug 258048
'ping' option parsing broken after merging in 'ping6' code.
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Potential Fix
ping_fbsd_option_fix.diff (text/plain), 3.79 KB, created by
ghuckriede
on 2021-08-25 20:46:59 UTC
(
hide
)
Description:
Potential Fix
Filename:
MIME Type:
Creator:
ghuckriede
Created:
2021-08-25 20:46:59 UTC
Size:
3.79 KB
patch
obsolete
>diff --git a/sbin/ping/main.c b/sbin/ping/main.c >index 01442679eff..070b27ff1ba 100644 >--- a/sbin/ping/main.c >+++ b/sbin/ping/main.c >@@ -52,13 +52,11 @@ __FBSDID("$FreeBSD$"); > #endif > > #if defined(INET) && defined(INET6) >-#define OPTSTR ":46" >+#define OPTSTR PING6OPTS PING4OPTS > #elif defined(INET) >-#define OPTSTR ":4" >+#define OPTSTR PING4OPTS > #elif defined(INET6) >-#define OPTSTR ":6" >-#else >-#define OPTSTR "" >+#define OPTSTR PING6OPTS > #endif > > int >@@ -82,7 +80,7 @@ main(int argc, char *argv[]) > ipv6 = true; > #endif > >- while ((ch = getopt(argc, argv, OPTSTR)) != -1) { >+ while ((ch = getopt(argc, argv, ":" OPTSTR)) != -1) { > switch(ch) { > #ifdef INET > case '4': >@@ -170,7 +168,7 @@ usage(void) > "[-G sweepmaxsize]\n" > " [-g sweepminsize] [-h sweepincrsize] [-i wait] " > "[-l preload]\n" >- " [-M mask | time] [-m ttl]" >+ " [-M mask | time] [-m ttl] " > #ifdef IPSEC > "[-P policy] " > #endif >@@ -188,7 +186,7 @@ usage(void) > " [-z tos] IPv4-mcast-group\n" > #endif /* INET */ > #ifdef INET6 >- "\tping [-6aADd" >+ "\tping [-6AaDd" > #if defined(IPSEC) && !defined(IPSEC_POLICY_IPSEC) > "E" > #endif >diff --git a/sbin/ping/main.h b/sbin/ping/main.h >index f9707ccfb5f..0f987e9a20a 100644 >--- a/sbin/ping/main.h >+++ b/sbin/ping/main.h >@@ -31,6 +31,26 @@ > #ifndef MAIN_H > #define MAIN_H 1 > >+#ifdef IPSEC >+#include <netipsec/ipsec.h> >+#endif /*IPSEC*/ >+ >+#if defined(INET) && defined(IPSEC) && defined(IPSEC_POLICY_IPSEC) >+ #define PING4ADDOPTS "P:" >+#else >+ #define PING4ADDOPTS >+#endif >+#define PING4OPTS "4AaC:c:DdfG:g:Hh:I:i:Ll:M:m:nop:QqRrS:s:T:t:vW:z:" PING4ADDOPTS >+ >+#if defined(INET6) && defined(IPSEC) && defined(IPSEC_POLICY_IPSEC) >+ #define PING6ADDOPTS "P:" >+#elif defined(INET6) && defined(IPSEC) && !defined(IPSEC_POLICY_IPSEC) >+ #define PING6ADDOPTS "ZE" >+#else >+ #define PING6ADDOPTS >+#endif >+#define PING6OPTS "6Aab:C:c:Dde:fHI:i:k:l:m:nNoOp:qS:s:t:uvyYW:z:" PING6ADDOPTS >+ > void usage(void) __dead2; > > #endif >diff --git a/sbin/ping/ping.c b/sbin/ping/ping.c >index fe197928085..be535f72146 100644 >--- a/sbin/ping/ping.c >+++ b/sbin/ping/ping.c >@@ -301,15 +301,7 @@ ping(int argc, char *const *argv) > alarmtimeout = df = preload = tos = pcp = 0; > > outpack = outpackhdr + sizeof(struct ip); >- while ((ch = getopt(argc, argv, >- "4AaC:c:DdfG:g:Hh:I:i:Ll:M:m:nop:QqRrS:s:T:t:vW:z:" >-#ifdef IPSEC >-#ifdef IPSEC_POLICY_IPSEC >- "P:" >-#endif /*IPSEC_POLICY_IPSEC*/ >-#endif /*IPSEC*/ >- )) != -1) >- { >+ while ((ch = getopt(argc, argv, PING4OPTS)) != -1) { > switch(ch) { > case '4': > /* This option is processed in main(). */ >diff --git a/sbin/ping/ping6.c b/sbin/ping/ping6.c >index 4cbeae77037..76a96f0631f 100644 >--- a/sbin/ping/ping6.c >+++ b/sbin/ping/ping6.c >@@ -293,7 +293,11 @@ static void pr_rthdr(void *, size_t); > static int pr_bitrange(u_int32_t, int, int); > static void pr_retip(struct ip6_hdr *, u_char *); > static void summary(void); >+#ifdef IPSEC >+#ifdef IPSEC_POLICY_IPSEC > static int setpolicy(int, char *); >+#endif >+#endif > static char *nigroup(char *, int); > > int >@@ -345,18 +349,8 @@ ping6(int argc, char *argv[]) > alarmtimeout = preload = 0; > datap = &outpack[ICMP6ECHOLEN + ICMP6ECHOTMLEN]; > capdns = capdns_setup(); >-#ifndef IPSEC >-#define ADDOPTS >-#else >-#ifdef IPSEC_POLICY_IPSEC >-#define ADDOPTS "P:" >-#else >-#define ADDOPTS "ZE" >-#endif /*IPSEC_POLICY_IPSEC*/ >-#endif >- while ((ch = getopt(argc, argv, >- "6k:b:C:c:DdfHe:m:I:i:l:unNop:qaAS:s:OvyYW:t:z:" ADDOPTS)) != -1) { >-#undef ADDOPTS >+ >+ while ((ch = getopt(argc, argv, PING6OPTS)) != -1) { > switch (ch) { > case '6': > /* This option is processed in main(). */ >@@ -2667,7 +2661,9 @@ pr_retip(struct ip6_hdr *ip6, u_char *end) > nh = ip6->ip6_nxt; > cp += hlen; > while (end - cp >= 8) { >+#ifdef IPSEC > struct ah ah; >+#endif > > switch (nh) { > case IPPROTO_HOPOPTS:
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 258048
: 227435