From owner-freebsd-bugs@FreeBSD.ORG Wed Dec 29 19:30:11 2010 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 60B661065672 for ; Wed, 29 Dec 2010 19:30:11 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 1CCEF8FC19 for ; Wed, 29 Dec 2010 19:30:11 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id oBTJUAKs008389 for ; Wed, 29 Dec 2010 19:30:10 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id oBTJUAk8008387; Wed, 29 Dec 2010 19:30:10 GMT (envelope-from gnats) Resent-Date: Wed, 29 Dec 2010 19:30:10 GMT Resent-Message-Id: <201012291930.oBTJUAk8008387@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, douglas steinwand Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 87AB9106564A for ; Wed, 29 Dec 2010 19:20:12 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from red.freebsd.org (unknown [IPv6:2001:4f8:fff6::22]) by mx1.freebsd.org (Postfix) with ESMTP id 779688FC0A for ; Wed, 29 Dec 2010 19:20:12 +0000 (UTC) Received: from red.freebsd.org (localhost [127.0.0.1]) by red.freebsd.org (8.14.4/8.14.4) with ESMTP id oBTJKCmI034209 for ; Wed, 29 Dec 2010 19:20:12 GMT (envelope-from nobody@red.freebsd.org) Received: (from nobody@localhost) by red.freebsd.org (8.14.4/8.14.4/Submit) id oBTJKCCI034208; Wed, 29 Dec 2010 19:20:12 GMT (envelope-from nobody) Message-Id: <201012291920.oBTJKCCI034208@red.freebsd.org> Date: Wed, 29 Dec 2010 19:20:12 GMT From: douglas steinwand To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Cc: Subject: bin/153527: wake(8) should use sysexits.h X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Dec 2010 19:30:11 -0000 >Number: 153527 >Category: bin >Synopsis: wake(8) should use sysexits.h >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Dec 29 19:30:10 UTC 2010 >Closed-Date: >Last-Modified: >Originator: douglas steinwand >Release: FreeBSD 8.1 >Organization: >Environment: FreeBSD paris.fx.org 8.1-RELEASE-p1 FreeBSD 8.1-RELEASE-p1 #23: Sat Oct 9 09:33:09 PDT 2010 root@paris.fx.org:/usr/obj/usr/src/sys/PARIS8 amd64 >Description: The /usr/sbin/wake utility exits success (0) if an error occurs, for example if run by an unprivileged user or an unknown host is specified: $ wake foo bar; echo "exit=$?" wake: no bpf: Permission denied wake: error sending Wake on LAN frame over foo to bar exit=0 This causes problems when the utility is called from a shell script or other environment which expects a meaningful exit value. >How-To-Repeat: Run wake(8) utility with an error condition. >Fix: The attached patch applies to FreeBSD 8.1 (src/usr.sbin/wake/wake.c,v 1.3.2.1.4.1) Patch attached with submission follows: --- usr.sbin/wake/wake.c.orig 2010-10-09 09:31:39.904356000 -0700 +++ usr.sbin/wake/wake.c 2010-12-29 10:59:54.646423552 -0800 @@ -41,6 +41,7 @@ #include #include #include +#include #define _PATH_BPF "/dev/bpf" @@ -63,7 +64,7 @@ { (void)fprintf(stderr, "usage: wake interface lladdr...\n"); - exit(1); + exit(EX_USAGE); } static int @@ -166,13 +167,16 @@ main(int argc, char *argv[]) { int n; + int rv = EX_OK; if (argc < 3) usage(); for (n = 2; n < argc; n++) - if (wake(argv[1], argv[n])) + if (wake(argv[1], argv[n])) { warnx("error sending Wake on LAN frame over %s to %s", argv[1], argv[n]); - return (0); + rv = EX_IOERR; + } + return (rv); } >Release-Note: >Audit-Trail: >Unformatted: