Date: Wed, 29 Mar 2006 18:31:09 GMT From: Peter <pb@ludd.luth.se> To: freebsd-gnats-submit@FreeBSD.org Subject: bin/95082: ping.c won't handle large preload patterns Message-ID: <200603291831.k2TIV9Zb017870@www.freebsd.org> Resent-Message-ID: <200603291840.k2TIeGe1098953@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 95082 >Category: bin >Synopsis: ping.c 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: >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:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200603291831.k2TIV9Zb017870>