list = kmalloc(sizeof(struct cond_av_list), GFP_KERNEL); 
list = kzalloc(sizeof(struct cond_av_list), GFP_KERNEL); 
static int cond_insertf(struct avtab *a, struct avtab_key *k, struct avtab_datum *d, void *ptr){	struct cond_insertf_data *data = ptr;	struct policydb *p = data->p;	struct cond_av_list *other = data->other, *list, *cur;	struct avtab_node *node_ptr;	u8 found;	/*	 * For type rules we have to make certain there aren't any	 * conflicting rules by searching the te_avtab and the	 * cond_te_avtab.	 */	if (k->specified & AVTAB_TYPE) {		if (avtab_search(&p->te_avtab, k)) {			printk("security: type rule already exists outside of a conditional.");			goto err;		}		/*		 * If we are reading the false list other will be a pointer to		 * the true list. We can have duplicate entries if there is only		 * 1 other entry and it is in our true list.		 *		 * If we are reading the true list (other == NULL) there shouldn't		 * be any other entries.		 */		if (other) {			node_ptr = avtab_search_node(&p->te_cond_avtab, k);			if (node_ptr) {				if (avtab_search_node_next(node_ptr, k->specified)) {					printk("security: too many conflicting type rules.");					goto err;				}				found = 0;				for (cur = other; cur != NULL; cur = cur->next) {					if (cur->node == node_ptr) {						found = 1;						break;					}				}				if (!found) {					printk("security: conflicting type rules.\n");					goto err;				}			}		} else {			if (avtab_search(&p->te_cond_avtab, k)) {				printk("security: conflicting type rules when adding type rule for true.\n");				goto err;			}		}	}	node_ptr = avtab_insert_nonunique(&p->te_cond_avtab, k, d);	if (!node_ptr) {		printk("security: could not insert rule.");		goto err;	}	list = kmalloc(sizeof(struct cond_av_list), GFP_KERNEL);	if (!list)		goto err;	memset(list, 0, sizeof(*list));	list->node = node_ptr;	if (!data->head)		data->head = list;	else		data->tail->next = list;	data->tail = list;	return 0;err:	cond_av_list_destroy(data->head);	data->head = NULL;	return -1;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/89d155ef62e5e0c10e4b37aaa5056f0beafe10e6/conditional.c/clean/security/selinux/ss/conditional.c