X-Git-Url: https://git.saurik.com/apple/system_cmds.git/blobdiff_plain/1815bff58803503e37009deeb85cfa8c22acf9d9..cf37c2996a8b83ccbcb7e2e413f749f6e60a3845:/at.tproj/perm.c diff --git a/at.tproj/perm.c b/at.tproj/perm.c index 0a5ba30..82bab87 100644 --- a/at.tproj/perm.c +++ b/at.tproj/perm.c @@ -1,27 +1,4 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ - * - * "Portions Copyright (c) 1999 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 1.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.apple.com/publicsource 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 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 * @@ -46,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 @@ -59,9 +40,10 @@ /* Local headers */ -#include "privs.h" #include "at.h" -#include "pathnames.h" +#include "panic.h" +#include "perm.h" +#include "privs.h" /* Macros */ @@ -69,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); @@ -82,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) { @@ -105,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(); @@ -115,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 @@ -130,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 @@ -143,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; }