X-Git-Url: https://git.saurik.com/apple/system_cmds.git/blobdiff_plain/83f6dbe8135dc38ce4ac497ebea7f0ebc87d9199..b58caf92d598c70ddd398b3909b0a2b8b5a110e1:/at.tproj/perm.c?ds=sidebyside diff --git a/at.tproj/perm.c b/at.tproj/perm.c index a2df820..82bab87 100644 --- a/at.tproj/perm.c +++ b/at.tproj/perm.c @@ -1,28 +1,4 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ - * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. - * - * This file contains Original Code and/or Modifications of Original Code - * as defined in and that are subject to the Apple Public Source License - * Version 2.0 (the 'License'). You may not use this file except in - * compliance with the License. Please obtain a copy of the License at - * http://www.opensource.apple.com/apsl/ and read it before using this - * file. - * - * The Original Code and all software distributed under the License are - * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER - * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. - * Please see the License for the specific language governing rights and - * limitations under the License. - * - * @APPLE_LICENSE_HEADER_END@ - */ -/* * perm.c - check user permission for at(1) * Copyright (C) 1994 Thomas Koenig * @@ -47,9 +23,13 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include +__FBSDID("$FreeBSD: src/usr.bin/at/perm.c,v 1.13 2001/12/10 21:13:01 dwmalone Exp $"); + /* System Headers */ #include +#include #include #include #include @@ -60,9 +40,10 @@ /* Local headers */ -#include "privs.h" #include "at.h" -#include "pathnames.h" +#include "panic.h" +#include "perm.h" +#include "privs.h" /* Macros */ @@ -70,10 +51,6 @@ /* Structures and unions */ -/* File scope variables */ - -static char rcsid[] = "$Id: perm.c,v 1.1.1.2 2000/01/11 02:10:05 wsanchez Exp $"; - /* Function declarations */ static int check_for_user(FILE *fp,const char *name); @@ -83,14 +60,12 @@ static int check_for_user(FILE *fp,const char *name); static int check_for_user(FILE *fp,const char *name) { char *buffer; - size_t len; + int len; int found = 0; - len = strlen(name); - if ((buffer = malloc(sizeof (char) * (len+2))) == NULL) { - fprintf(stderr, "malloc error!"); - exit(EXIT_FAILURE); - } + len = (int)strlen(name); + if ((buffer = malloc(len+2)) == NULL) + errx(EXIT_FAILURE, "virtual memory exhausted"); while(fgets(buffer, len+2, fp) != NULL) { @@ -106,7 +81,7 @@ static int check_for_user(FILE *fp,const char *name) return found; } /* Global functions */ -int check_permission() +int check_permission(void) { FILE *fp; uid_t uid = geteuid(); @@ -116,14 +91,11 @@ int check_permission() return 1; if ((pentry = getpwuid(uid)) == NULL) - { - perror("Cannot access user database"); - exit(EXIT_FAILURE); - } + err(EXIT_FAILURE, "cannot access user database"); PRIV_START - fp=fopen(_PATH_AT "at.allow","r"); + fp=fopen(PERM_PATH "at.allow","r"); PRIV_END @@ -131,12 +103,12 @@ int check_permission() { return check_for_user(fp, pentry->pw_name); } - else + else if (errno == ENOENT) { PRIV_START - fp=fopen(_PATH_AT "at.deny", "r"); + fp=fopen(PERM_PATH "at.deny", "r"); PRIV_END @@ -144,7 +116,10 @@ int check_permission() { return !check_for_user(fp, pentry->pw_name); } - perror("at.deny"); + else if (errno != ENOENT) + warn("at.deny"); } + else + warn("at.allow"); return 0; }