usr/src/lib/libbsm/common/au_preselect.c
author jpk
Fri, 24 Mar 2006 12:29:20 -0800
changeset 1676 37f4a3e2bd99
parent 0 68f95e015346
child 4893 0177e932e294
permissions -rw-r--r--
PSARC/2002/762 Layered Trusted Solaris PSARC/2005/060 TSNET: Trusted Networking with Security Labels PSARC/2005/259 Layered Trusted Solaris Label Interfaces PSARC/2005/573 Solaris Trusted Extensions for Printing PSARC/2005/691 Trusted Extensions for Device Allocation PSARC/2005/723 Solaris Trusted Extensions Filesystem Labeling PSARC/2006/009 Labeled Auditing PSARC/2006/155 Trusted Extensions RBAC Changes PSARC/2006/191 is_system_labeled 6293271 Zone processes should use zone_kcred instead of kcred 6394554 integrate Solaris Trusted Extensions
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     1
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     2
 * CDDL HEADER START
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     3
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     4
 * The contents of this file are subject to the terms of the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     5
 * Common Development and Distribution License, Version 1.0 only
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     6
 * (the "License").  You may not use this file except in compliance
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     7
 * with the License.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     8
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     9
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    10
 * or http://www.opensolaris.org/os/licensing.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    11
 * See the License for the specific language governing permissions
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    12
 * and limitations under the License.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    13
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    14
 * When distributing Covered Code, include this CDDL HEADER in each
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    15
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    16
 * If applicable, add the following below this CDDL HEADER, with the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    17
 * fields enclosed by brackets "[]" replaced with your own identifying
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    18
 * information: Portions Copyright [yyyy] [name of copyright owner]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    19
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    20
 * CDDL HEADER END
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    21
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    22
#pragma ident	"%Z%%M%	%I%	%E% SMI"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    23
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    24
#ifndef lint
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    25
static char sccsid[] = "%Z%%M% %I% %E% SMI";
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    26
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    27
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    28
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    29
 * Copyright (c) 1988 by Sun Microsystems, Inc.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    30
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    31
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    32
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    33
 * au_preselect.c
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    34
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    35
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    36
#include <sys/types.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    37
#include <stdio.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    38
#include <stdlib.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    39
#include <bsm/audit.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    40
#include <bsm/libbsm.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    41
#include <synch.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    42
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    43
#define	ALLOC_INIT (600)	/* initially allocate ALLOC_INIT map entries */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    44
#define	ALLOC_INCR (100)	/* if more map entries are needed, realloc */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    45
				/* in ALLOC_INCR increments */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    46
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    47
static int alloc_map();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    48
static int load_map();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    49
static int realloc_map();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    50
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    51
typedef struct event_map {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    52
	au_event_t event;	/* audit event number */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    53
	au_class_t class;	/* audit event class mask */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    54
} event_map_t;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    55
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    56
static event_map_t *event_map;	/* the map */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    57
static u_int alloc_count;	/* number of entries currently allocated */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    58
static u_int event_count;	/* number of entries in map */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    59
static mutex_t mutex_au_preselect = DEFAULTMUTEX;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    60
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    61
extern int _mutex_lock(mutex_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    62
extern int _mutex_unlock(mutex_t *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    63
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    64
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    65
 * au_preselect:
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    66
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    67
 * Keep a dynamic array of event<-->class mappings.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    68
 * Refresh the map when the value of flag is non-zero.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    69
 * Return:
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    70
 *	1: The event is preselected.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    71
 *	0: The event is not preselected.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    72
 *	-1: There was an error:
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    73
 *		Couldn't allocate memory.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    74
 *		Couldn't find event.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    75
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    76
int
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    77
#ifdef __STDC__
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    78
au_preselect(au_event_t au_event, au_mask_t *au_mask_p, int sorf, int flag)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    79
#else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    80
au_preselect(au_event, au_mask_p, sorf, flag)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    81
	au_event_t au_event;	/* event */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    82
	au_mask_t *au_mask_p;	/* preselection mask */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    83
	int sorf;		/* success or failure */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    84
	int flag;		/* re-read flag */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    85
#endif /* __STDC__ */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    86
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    87
	static char been_here_before;  /* we cache the map */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    88
	register int i;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    89
	register au_class_t comp_class;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    90
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    91
	_mutex_lock(&mutex_au_preselect);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    92
	if (!been_here_before) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    93
		if (alloc_map() == -1) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    94
			_mutex_unlock(&mutex_au_preselect);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    95
			return (-1);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    96
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    97
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    98
		if (load_map() == -1) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    99
			_mutex_unlock(&mutex_au_preselect);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   100
			return (-1);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   101
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   102
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   103
		been_here_before = 1;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   104
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   105
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   106
	/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   107
	 * Don't use the cache. Re-read the audit_event(5) db every time
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   108
	 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   109
	if (flag == AU_PRS_REREAD) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   110
		if (load_map() == -1) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   111
			_mutex_unlock(&mutex_au_preselect);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   112
			return (-1);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   113
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   114
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   115
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   116
	/* Determine what portion of the preselection mask to check. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   117
	if (sorf == AU_PRS_SUCCESS)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   118
		comp_class = au_mask_p->am_success;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   119
	else if (sorf == AU_PRS_FAILURE)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   120
		comp_class = au_mask_p->am_failure;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   121
	else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   122
		comp_class = au_mask_p->am_success | au_mask_p->am_failure;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   123
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   124
	for (i = 0; i < event_count; i++) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   125
		if (event_map[i].event == au_event) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   126
			if (event_map[i].class & comp_class) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   127
				_mutex_unlock(&mutex_au_preselect);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   128
				return (1);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   129
			} else {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   130
				_mutex_unlock(&mutex_au_preselect);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   131
				return (0);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   132
			}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   133
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   134
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   135
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   136
	_mutex_unlock(&mutex_au_preselect);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   137
	return (-1);	/* could not find event in the table */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   138
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   139
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   140
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   141
 * Initially allocate about as many map entries as are there
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   142
 * are audit events shipped with the system. For sites
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   143
 * that don't add audit events, this should be enough.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   144
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   145
static int
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   146
alloc_map()
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   147
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   148
	if ((event_map = (event_map_t *)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   149
		calloc(ALLOC_INIT, (size_t)sizeof (event_map_t))) ==
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   150
		(event_map_t *)NULL)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   151
		return (-1);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   152
	else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   153
		alloc_count = ALLOC_INIT;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   154
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   155
	return (0);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   156
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   157
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   158
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   159
 * load the event<->class map into memory
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   160
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   161
static int
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   162
load_map()
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   163
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   164
	register au_event_ent_t *evp;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   165
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   166
	event_count = 0;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   167
	setauevent();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   168
	while ((evp = getauevent()) != (au_event_ent_t *)NULL) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   169
		if (event_count > alloc_count)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   170
			if (realloc_map() == -1) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   171
				endauevent();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   172
				return (-1);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   173
			}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   174
		event_map[event_count].event = evp->ae_number;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   175
		event_map[event_count].class = evp->ae_class;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   176
		++event_count;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   177
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   178
	endauevent();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   179
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   180
	return (0);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   181
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   182
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   183
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   184
 * realloc the event map in ALLOC_INCR increments
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   185
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   186
static int
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   187
realloc_map()
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   188
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   189
	register size_t rsize;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   190
	rsize = sizeof (event_map_t) * (alloc_count + ALLOC_INCR);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   191
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   192
	if ((event_map = (event_map_t *)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   193
		realloc(event_map, rsize)) == (event_map_t *)NULL)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   194
		return (-1);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   195
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   196
	return (0);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   197
}