summaryrefslogtreecommitdiffstats
path: root/sbin/ping
diff options
context:
space:
mode:
authormdodd <mdodd@FreeBSD.org>2003-01-29 20:42:42 +0000
committermdodd <mdodd@FreeBSD.org>2003-01-29 20:42:42 +0000
commit718bb6c717cdf4772ac42e966da0cd849aff9aa2 (patch)
tree4885bd68eeca6f0dc40b248a4c99bf569bfd285b /sbin/ping
parent98eed43c20668a63cdf2710eb7fe473b4dee5b28 (diff)
downloadFreeBSD-src-718bb6c717cdf4772ac42e966da0cd849aff9aa2.zip
FreeBSD-src-718bb6c717cdf4772ac42e966da0cd849aff9aa2.tar.gz
Call fill() after maxpayload has been initialized.
Reviewed by: maxim
Diffstat (limited to 'sbin/ping')
-rw-r--r--sbin/ping/ping.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sbin/ping/ping.c b/sbin/ping/ping.c
index e9c739a..a1f2450 100644
--- a/sbin/ping/ping.c
+++ b/sbin/ping/ping.c
@@ -213,7 +213,7 @@ main(argc, argv)
struct termios ts;
size_t sz;
u_char *datap, packet[IP_MAXPACKET];
- char *ep, *source, *target;
+ char *ep, *source, *target, *payload;
struct hostent *hp;
#ifdef IPSEC_POLICY_IPSEC
char *policy_in, *policy_out;
@@ -249,7 +249,6 @@ main(argc, argv)
alarmtimeout = df = preload = tos = 0;
outpack = outpackhdr + sizeof(struct ip);
- datap = &outpack[MINICMPLEN + PHDR_LEN];
while ((ch = getopt(argc, argv,
"ADI:LQRS:T:c:adfi:l:m:Mnop:qrs:t:vz:"
#ifdef IPSEC
@@ -341,7 +340,7 @@ main(argc, argv)
break;
case 'p': /* fill buffer with user pattern */
options |= F_PINGFILLED;
- fill((char *)datap, optarg);
+ payload = optarg;
break;
case 'Q':
options |= F_QUIET2;
@@ -427,6 +426,10 @@ main(argc, argv)
if (datalen > maxpayload)
errx(EX_USAGE, "packet size too large: %lu > %u", datalen,
maxpayload);
+ datap = &outpack[MINICMPLEN + PHDR_LEN];
+ if (options & F_PINGFILLED) {
+ fill((char *)datap, payload);
+ }
if (source) {
bzero((char *)&sin, sizeof(sin));
sin.sin_family = AF_INET;
OpenPOWER on IntegriCloud