diff options
Diffstat (limited to 'usr/src/cmd/lp/lib/secure/secure.c')
-rw-r--r-- | usr/src/cmd/lp/lib/secure/secure.c | 269 |
1 files changed, 0 insertions, 269 deletions
diff --git a/usr/src/cmd/lp/lib/secure/secure.c b/usr/src/cmd/lp/lib/secure/secure.c deleted file mode 100644 index ff9d583cda..0000000000 --- a/usr/src/cmd/lp/lib/secure/secure.c +++ /dev/null @@ -1,269 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright 2007 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. - */ - -/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ -/* All Rights Reserved */ - - -#pragma ident "%Z%%M% %I% %E% SMI" -/* EMACS_MODES: !fill, lnumb, !overwrite, !nodelete, !picture */ - -#include "string.h" -#include "sys/param.h" -#include "stdlib.h" - -#include "lp.h" -#include "secure.h" -#include <tsol/label.h> - -/** - ** getsecure() - EXTRACT SECURE REQUEST STRUCTURE FROM DISK FILE - **/ - -SECURE * -getsecure(char *file) -{ - SECURE *secp; - - char buf[BUFSIZ], - *path; - - int fd; - - int fld; - - - if (*file == '/') - path = Strdup(file); - else - path = makepath(Lp_Requests, file, (char *)0); - if (!path) - return (0); - - if ((fd = open_locked(path, "r", MODE_NOREAD)) < 0) { - Free (path); - return (0); - } - Free (path); - - secp = calloc(sizeof (*secp), 1); - - secp->user = 0; - errno = 0; - for ( - fld = 0; - fld < SC_MAX && fdgets(buf, BUFSIZ, fd); - fld++ - ) { - buf[strlen(buf) - 1] = 0; - switch (fld) { - - case SC_REQID: - secp->req_id = Strdup(buf); - break; - - case SC_UID: - secp->uid = (uid_t)atol(buf); - break; - - case SC_USER: - secp->user = Strdup(buf); - break; - - case SC_GID: - secp->gid = (gid_t)atol(buf); - break; - - case SC_SIZE: - secp->size = (size_t)atol(buf); - break; - - case SC_DATE: - secp->date = (time_t)atol(buf); - break; - - case SC_SLABEL: - secp->slabel = Strdup(buf); - break; - } - } - if (errno != 0 || fld != SC_MAX) { - int save_errno = errno; - - freesecure (secp); - close(fd); - errno = save_errno; - return (0); - } - close(fd); - - /* - * Now go through the structure and see if we have - * anything strange. - */ - if ( - secp->uid > MAXUID - || !secp->user - || secp->gid > MAXUID - || secp->size == 0 - || secp->date <= 0 - ) { - freesecure (secp); - errno = EBADF; - return (0); - } - - return (secp); -} - -/** - ** putsecure() - WRITE SECURE REQUEST STRUCTURE TO DISK FILE - **/ - -int -putsecure(char *file, SECURE *secbufp) -{ - char *path; - - int fd; - - int fld; - - if (*file == '/') - path = Strdup(file); - else - path = makepath(Lp_Requests, file, (char *)0); - if (!path) - return (-1); - - if ((fd = open_locked(path, "w", MODE_NOREAD)) < 0) { - Free (path); - return (-1); - } - Free (path); - - if ( - !secbufp->req_id || - !secbufp->user - ) - return (-1); - - for (fld = 0; fld < SC_MAX; fld++) - - switch (fld) { - - case SC_REQID: - (void)fdprintf(fd, "%s\n", secbufp->req_id); - break; - - case SC_UID: - (void)fdprintf(fd, "%u\n", secbufp->uid); - break; - - case SC_USER: - (void)fdprintf(fd, "%s\n", secbufp->user); - break; - - case SC_GID: - (void)fdprintf(fd, "%u\n", secbufp->gid); - break; - - case SC_SIZE: - (void)fdprintf(fd, "%lu\n", secbufp->size); - break; - - case SC_DATE: - (void)fdprintf(fd, "%ld\n", secbufp->date); - break; - - case SC_SLABEL: - if (secbufp->slabel == NULL) { - if (is_system_labeled()) { - m_label_t *sl; - - sl = m_label_alloc(MAC_LABEL); - (void) getplabel(sl); - if (label_to_str(sl, &(secbufp->slabel), - M_INTERNAL, DEF_NAMES) != 0) { - perror("label_to_str"); - secbufp->slabel = - strdup("bad_label"); - } - m_label_free(sl); - (void) fdprintf(fd, "%s\n", - secbufp->slabel); - } else { - (void) fdprintf(fd, "none\n"); - } - } else { - (void) fdprintf(fd, "%s\n", secbufp->slabel); - } - break; - } - close(fd); - - return (0); -} - -/* -** rmsecure () -** -** o 'reqfilep' is of the form 'node-name/request-file' -** e.g. 'sfcalv/123-0'. -*/ -int -rmsecure (char *reqfilep) -{ - int n; - char * pathp; - - pathp = makepath (Lp_Requests, reqfilep, (char *) 0); - if (! pathp) - return -1; - - n = Unlink (pathp); - Free (pathp); - - return n; -} - -/** - ** freesecure() - FREE A SECURE STRUCTURE - **/ - -void -freesecure(SECURE *secbufp) -{ - if (!secbufp) - return; - if (secbufp->req_id) - Free (secbufp->req_id); - if (secbufp->user) - Free (secbufp->user); - Free (secbufp); - - return; -} |