From nobody@FreeBSD.org  Wed Mar 29 18:31:10 2006
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id 68EE016A400
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 29 Mar 2006 18:31:10 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (www.freebsd.org [216.136.204.117])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 0C52743D46
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 29 Mar 2006 18:31:10 +0000 (GMT)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.13.1/8.13.1) with ESMTP id k2TIV9D2017871
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 29 Mar 2006 18:31:09 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.13.1/8.13.1/Submit) id k2TIV9Zb017870;
	Wed, 29 Mar 2006 18:31:09 GMT
	(envelope-from nobody)
Message-Id: <200603291831.k2TIV9Zb017870@www.freebsd.org>
Date: Wed, 29 Mar 2006 18:31:09 GMT
From: Peter <pb@ludd.luth.se>
To: freebsd-gnats-submit@FreeBSD.org
Subject: ping.c won't handle large preload patterns
X-Send-Pr-Version: www-2.3

>Number:         95082
>Category:       bin
>Synopsis:       [patch] ping(8) won't handle large preload patterns
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Wed Mar 29 18:40:16 GMT 2006
>Closed-Date:    
>Last-Modified:  Sat Jun 14 06:13:42 UTC 2008
>Originator:     Peter
>Release:        FreeBSD 6.0-Release i386
>Organization:
>Environment:
>Description:
With this patch one can use ping to wake up Wake-on-lan clients. Commands like this becomes possible:
ping -c 1 -s 204 -p FFFFFFFFFFFFFFFFFFFFFFFF112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566 Broadcast_IP

Mac address from unpowered machines can be fixed with (if you want to avoid broadcast):
arp -S 1.2.3.4 11:22:33:44:55:66


diff -c patch against 6.0-FreeBSD-RELEASE i386 sources.

>How-To-Repeat:

>Fix:
*** ping.c      Fri Aug 19 11:29:25 2005
--- ping.c      Wed Mar 29 19:02:11 2006
***************
*** 1650,1656 ****
        char *bp, *patp;
  {
        char *cp;
!       int pat[16];
        u_int ii, jj, kk;
  
        for (cp = patp; *cp; cp++) {
--- 1650,1656 ----
        char *bp, *patp;
  {
        char *cp;
!       int pat[1500];
        u_int ii, jj, kk;
  
        for (cp = patp; *cp; cp++) {
***************
*** 1659,1669 ****
                            "patterns must be specified as hex digits");
  
        }
!       ii = sscanf(patp,
!           "%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x",
!           &pat[0], &pat[1], &pat[2], &pat[3], &pat[4], &pat[5], &pat[6],
!           &pat[7], &pat[8], &pat[9], &pat[10], &pat[11], &pat[12],
!           &pat[13], &pat[14], &pat[15]);
  
        if (ii > 0)
                for (kk = 0; kk <= maxpayload - (TIMEVAL_LEN + ii); kk += ii)
--- 1659,1668 ----
                            "patterns must be specified as hex digits");
  
        }
! 
!       for( ii=0;
!              ii<sizeof(pat)/sizeof(pat[0]) &&  *(patp+2*ii)!=NULL;  ii++)
!               sscanf( patp+2*ii,"%2x", &pat[ii] );
  
        if (ii > 0)
                for (kk = 0; kk <= maxpayload - (TIMEVAL_LEN + ii); kk += ii)

>Release-Note:
>Audit-Trail:
>Unformatted:
