diff options
Diffstat (limited to 'usr/src/lib/libbc/libc/gen/common/getacinfo.c')
-rw-r--r-- | usr/src/lib/libbc/libc/gen/common/getacinfo.c | 310 |
1 files changed, 0 insertions, 310 deletions
diff --git a/usr/src/lib/libbc/libc/gen/common/getacinfo.c b/usr/src/lib/libbc/libc/gen/common/getacinfo.c deleted file mode 100644 index cf0192ed16..0000000000 --- a/usr/src/lib/libbc/libc/gen/common/getacinfo.c +++ /dev/null @@ -1,310 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (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 1989 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. - */ - -#pragma ident "%Z%%M% %I% %E% SMI" - -/* getacinfo.c - get audit control info */ - -#include <stdio.h> -#include <string.h> - -#define DIROP 0 -#define OTHEROP 1 - -#define LEN 360 /* maximum audit control entry length */ - -#define SUCCESS 0 -#define EOF_WARN 1 -#define REW_WARN 2 -#define EOF_ERR -1 -#define ERROR -2 -#define FORMAT_ERR -3 - - -static char *AUDIT_CTRL = "/etc/security/audit/audit_control"; -static char *MINLABEL = "minfree:"; -static char *DIRLABEL = "dir:"; -static char *FLGLABEL = "flags:"; -static int LASTOP; -static int DIRINIT; -static FILE *acf; /* pointer into /etc/security/audit/audit_control */ - -void setac(void); -void endac(void); - -/* getacinfo.c - get audit control info - * - * getacdir() - get audit control directories, one at a time - * getacflg() - get audit control flags - * getacmin() - get audit control directory min. fill value - * setac() - rewind the audit control file - * endac() - close the audit control file - */ - - -/* getacdir() - get audit control directories, one at a time - * - * input: len - size of dir buffer - * - * output: dir - directory string - * - * returns: 0 - entry read ok - * -1 - end of file - * -2 - error - can't open audit control file for read - * -3 - error - directory entry format error - * 1 - directory search started from beginning again - * - * notes: It is the responsibility of the calling function to - * check the status of the directory entry. - */ - -int -getacdir(char *dir, int len) -{ - int retstat = SUCCESS, gotone = 0, dirlen, dirst; - char entry[LEN]; - - /* - * open file if it is not already opened - */ - if (acf == NULL && (acf = fopen(AUDIT_CTRL, "r")) == NULL) - retstat = ERROR; - else if (LASTOP != DIROP && DIRINIT == 1) { - retstat = REW_WARN; - setac(); - } else { - DIRINIT = 1; - LASTOP == DIROP; - } - if (retstat >= SUCCESS) { - do { - if (fgets(entry, LEN, acf) != NULL) { - switch(*entry) { - case '#': - break; - case 'd': - /* - * return directory entry - */ - if (!strncmp(entry,DIRLABEL,strlen(DIRLABEL))) { - if ((strlen(entry)+1) > len) - retstat = FORMAT_ERR; - else { - /* - * allow zero or one blank - * between colon and directory - */ - if (entry[strlen(DIRLABEL)] == ' ') { - dirst = strlen(DIRLABEL)+1; - dirlen = - strlen(entry) - - (strlen(DIRLABEL)+2); - } else { - dirst = strlen(DIRLABEL); - dirlen = - strlen(entry) - - (strlen(DIRLABEL)+1); - } - strcpy(dir, entry+dirst); - strcpy(dir+dirlen, "\0"); - gotone = 1; - } - } else - retstat = FORMAT_ERR; - break; - case 'm': - break; - case 'f': - break; - default: - break; - } - } else if ((feof(acf)) == 0) - retstat = ERROR; - else - retstat = EOF_ERR; - - } while (gotone == 0 && retstat >= SUCCESS); - } - return (retstat); -} - -/* - * getacmin() - get audit control directory min. fill value - * - * output: min_val - percentage of directory fill allowed - * - * returns: 0 - entry read ok - * 1 - end of file - * -2 - error; errno contains error number - * -3 - error - directory entry format error - */ - -int -getacmin(int *min_val) -{ - int retstat = SUCCESS, gotone = 0; - char entry[LEN]; - - /* - * open file if it is not already opened - */ - if (acf == NULL && (acf = fopen(AUDIT_CTRL, "r")) == NULL) - retstat = ERROR; - else - rewind(acf); - - if (retstat == SUCCESS) { - do { - if (fgets(entry, LEN, acf) != NULL) { - switch(*entry) { - case '#': - break; - case 'd': - break; - case 'm': - if (!strncmp(entry, MINLABEL, strlen(MINLABEL))) { - sscanf(entry+strlen(MINLABEL), "%d", min_val); - gotone = 1; - } else - retstat = FORMAT_ERR; - break; - case 'f': - break; - default: - break; - } - } else if ((feof(acf)) == 0) - retstat = ERROR; - else - retstat = EOF_WARN; - - } while (gotone == 0 && retstat == SUCCESS); - } - - if (LASTOP == DIROP) - LASTOP = OTHEROP; - else - endac(); - - return (retstat); -} - -/* getacflg() - get audit control flags - * - * output: auditstring - character representation of system audit flags - * - * returns: 0 - entry read ok - * 1 - end of file - * -2 - error - errno contains error number - * -3 - error - directory entry format error - */ - -int -getacflg(char *auditstring, int len) -{ - int retstat = SUCCESS, gotone = 0, minst, minlen; - char entry[LEN]; - - /* - * open file if it is not already opened - */ - if (acf == NULL && (acf = fopen(AUDIT_CTRL, "r")) == NULL) - retstat = ERROR; - else - rewind(acf); - - if (retstat == SUCCESS) { - do { - if (fgets(entry, LEN, acf) != NULL) { - switch(*entry) { - case '#': - break; - case 'd': - break; - case 'm': - break; - case 'f': - if ((strncmp(entry, FLGLABEL, strlen(FLGLABEL))) == 0) { - if (entry[strlen(FLGLABEL)] == ' ') { - minst = strlen(FLGLABEL)+1; - minlen = strlen(entry)-(strlen(FLGLABEL)+2); - } else { - minst = strlen(FLGLABEL); - minlen = strlen(entry)-(strlen(FLGLABEL)+1); - } - if (minlen > len) - retstat = FORMAT_ERR; - else { - strcpy(auditstring, entry+minst); - strcpy(auditstring+minlen, "\0"); - gotone = 1; - } - } else - retstat = FORMAT_ERR; - break; - default: - break; - } - } else if ((feof(acf)) == 0) - retstat = ERROR; - else - retstat = EOF_WARN; - - } while (gotone == 0 && retstat == SUCCESS); - } - if (LASTOP == DIROP) - LASTOP = OTHEROP; - else - endac(); - - return (retstat); -} - -/* rewind the audit control file */ -void -setac(void) -{ - if (acf == NULL) - acf = fopen(AUDIT_CTRL, "r"); - else - rewind(acf); - LASTOP = DIROP; - DIRINIT = 0; -} - - -/* close the audit control file */ -void -endac(void) -{ - if (acf != NULL) { - fclose(acf); - acf = NULL; - } - LASTOP = DIROP; - DIRINIT = 0; -} |