Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 14 Jan 2002 17:03:42 +0200
From:      Ruslan Ermilov <ru@FreeBSD.org>
To:        current@FreeBSD.org
Cc:        ume@FreeBSD.org
Subject:   Re: cvs commit: src/sbin/ping ping.c
Message-ID:  <20020114170342.E21333@sunbay.com>
In-Reply-To: <200201141433.g0EEXZV12841@freefall.freebsd.org>
References:  <200201141433.g0EEXZV12841@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Jan 14, 2002 at 06:33:35AM -0800, Ruslan Ermilov wrote:
> ru          2002/01/14 06:33:35 PST
> 
>   Modified files:
>     sbin/ping            ping.c 
>   Log:
>   Fixed two bugs with the "-l preload" option:
>   
>   - first ping after a preload was sent undelayed
>   - we could send more than -c packets in preload
>   
>   PR:             bin/32354
>   
>   Revision  Changes    Path
>   1.61      +10 -6     src/sbin/ping/ping.c
> 
Here's a patch for ping6(8).  ping6 is not vulnerable to the
second problem.

Index: ping6.c
===================================================================
RCS file: /cvs/FreeBSD/src/sbin/ping6/ping6.c,v
retrieving revision 1.14
diff -u -p -u -p -6 -r1.14 ping6.c
--- ping6.c	11 Dec 2001 18:36:29 -0000	1.14
+++ ping6.c	14 Jan 2002 14:55:48 -0000
@@ -969,26 +969,29 @@ main(argc, argv)
 
 	printf("PING6(%lu=40+8+%lu bytes) ", (unsigned long)(40 + pingerlen()),
 	    (unsigned long)(pingerlen() - 8));
 	printf("%s --> ", pr_addr((struct sockaddr *)&src, sizeof(src)));
 	printf("%s\n", pr_addr((struct sockaddr *)&dst, sizeof(dst)));
 
-	while (preload--)		/* Fire off them quickies. */
-		(void)pinger();
+	if (preload == 0)
+		(void)pinger();		/* Send the first packet. */
+	else {
+		while (preload--)	/* Fire off them quickies. */
+			(void)pinger();
+	}
 
 	(void)signal(SIGINT, onsignal);
 #ifdef SIGINFO
 	(void)signal(SIGINFO, onsignal);
 #endif
 
 	if ((options & F_FLOOD) == 0) {
 		(void)signal(SIGALRM, onsignal);
 		itimer.it_interval = interval;
 		itimer.it_value = interval;
 		(void)setitimer(ITIMER_REAL, &itimer, NULL);
-		retransmit();
 	}
 
 	fdmasks = howmany(s + 1, NFDBITS) * sizeof(fd_mask);
 	if ((fdmaskp = malloc(fdmasks)) == NULL)
 		err(1, "malloc");
 

-- 
Ruslan Ermilov		Oracle Developer/DBA,
ru@sunbay.com		Sunbay Software AG,
ru@FreeBSD.org		FreeBSD committer,
+380.652.512.251	Simferopol, Ukraine

http://www.FreeBSD.org	The Power To Serve
http://www.oracle.com	Enabling The Information Age

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020114170342.E21333>