亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mls.c

?? 優(yōu)龍2410linux2.6.8內(nèi)核源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Implementation of the multi-level security (MLS) policy. * * Author : Stephen Smalley, <sds@epoch.ncsc.mil> */#include <linux/kernel.h>#include <linux/slab.h>#include <linux/string.h>#include <linux/errno.h>#include "mls.h"#include "policydb.h"#include "services.h"/* * Remove any permissions from `allowed' that are * denied by the MLS policy. */void mls_compute_av(struct context *scontext,		    struct context *tcontext,		    struct class_datum *tclass,		    u32 *allowed){	unsigned int rel[2];	int l;	for (l = 0; l < 2; l++)		rel[l] = mls_level_relation(scontext->range.level[l],					    tcontext->range.level[l]);	if (rel[1] != MLS_RELATION_EQ) {		if (rel[1] != MLS_RELATION_DOM &&		    !ebitmap_get_bit(&policydb.trustedreaders, scontext->type - 1) &&		    !ebitmap_get_bit(&policydb.trustedobjects, tcontext->type - 1)) {			/* read(s,t) = (s.high >= t.high) = False */			*allowed = (*allowed) & ~(tclass->mlsperms.read);		}		if (rel[1] != MLS_RELATION_DOMBY &&		    !ebitmap_get_bit(&policydb.trustedreaders, tcontext->type - 1) &&		    !ebitmap_get_bit(&policydb.trustedobjects, scontext->type - 1)) {			/* readby(s,t) = read(t,s) = False */			*allowed = (*allowed) & ~(tclass->mlsperms.readby);		}	}	if (((rel[0] != MLS_RELATION_DOMBY && rel[0] != MLS_RELATION_EQ) ||	    ((!mls_level_eq(tcontext->range.level[0],			    tcontext->range.level[1])) &&	     (rel[1] != MLS_RELATION_DOM && rel[1] != MLS_RELATION_EQ))) &&	    !ebitmap_get_bit(&policydb.trustedwriters, scontext->type - 1) &&	    !ebitmap_get_bit(&policydb.trustedobjects, tcontext->type - 1)) {		/*		 * write(s,t) = ((s.low <= t.low = t.high) or (s.low		 * <= t.low <= t.high <= s.high)) = False		 */		*allowed = (*allowed) & ~(tclass->mlsperms.write);	}	if (((rel[0] != MLS_RELATION_DOM && rel[0] != MLS_RELATION_EQ) ||	    ((!mls_level_eq(scontext->range.level[0],			    scontext->range.level[1])) &&	     (rel[1] != MLS_RELATION_DOMBY && rel[1] != MLS_RELATION_EQ))) &&	    !ebitmap_get_bit(&policydb.trustedwriters, tcontext->type - 1) &&	    !ebitmap_get_bit(&policydb.trustedobjects, scontext->type - 1)) {		/* writeby(s,t) = write(t,s) = False */		*allowed = (*allowed) & ~(tclass->mlsperms.writeby);	}}/* * Return the length in bytes for the MLS fields of the * security context string representation of `context'. */int mls_compute_context_len(struct context * context){	int i, l, len;	len = 0;	for (l = 0; l < 2; l++) {		len += strlen(policydb.p_sens_val_to_name[context->range.level[l].sens - 1]) + 1;		for (i = 1; i <= ebitmap_length(&context->range.level[l].cat); i++)			if (ebitmap_get_bit(&context->range.level[l].cat, i - 1))				len += strlen(policydb.p_cat_val_to_name[i - 1]) + 1;		if (mls_level_relation(context->range.level[0], context->range.level[1])				== MLS_RELATION_EQ)			break;	}	return len;}/* * Write the security context string representation of * the MLS fields of `context' into the string `*scontext'. * Update `*scontext' to point to the end of the MLS fields. */int mls_sid_to_context(struct context *context,		       char **scontext){	char *scontextp;	int i, l;	scontextp = *scontext;	for (l = 0; l < 2; l++) {		strcpy(scontextp,		       policydb.p_sens_val_to_name[context->range.level[l].sens - 1]);		scontextp += strlen(policydb.p_sens_val_to_name[context->range.level[l].sens - 1]);		*scontextp = ':';		scontextp++;		for (i = 1; i <= ebitmap_length(&context->range.level[l].cat); i++)			if (ebitmap_get_bit(&context->range.level[l].cat, i - 1)) {				strcpy(scontextp, policydb.p_cat_val_to_name[i - 1]);				scontextp += strlen(policydb.p_cat_val_to_name[i - 1]);				*scontextp = ',';				scontextp++;			}		if (mls_level_relation(context->range.level[0], context->range.level[1])				!= MLS_RELATION_EQ) {			scontextp--;			sprintf(scontextp, "-");			scontextp++;		} else {			break;		}	}	*scontext = scontextp;	return 0;}/* * Return 1 if the MLS fields in the security context * structure `c' are valid.  Return 0 otherwise. */int mls_context_isvalid(struct policydb *p, struct context *c){	unsigned int relation;	struct level_datum *levdatum;	struct user_datum *usrdatum;	struct mls_range_list *rnode;	int i, l;	/*	 * MLS range validity checks: high must dominate low, low level must	 * be valid (category set <-> sensitivity check), and high level must	 * be valid (category set <-> sensitivity check)	 */	relation = mls_level_relation(c->range.level[1],				      c->range.level[0]);	if (!(relation & (MLS_RELATION_DOM | MLS_RELATION_EQ)))		/* High does not dominate low. */		return 0;	for (l = 0; l < 2; l++) {		if (!c->range.level[l].sens || c->range.level[l].sens > p->p_levels.nprim)			return 0;		levdatum = hashtab_search(p->p_levels.table,			p->p_sens_val_to_name[c->range.level[l].sens - 1]);		if (!levdatum)			return 0;		for (i = 1; i <= ebitmap_length(&c->range.level[l].cat); i++) {			if (ebitmap_get_bit(&c->range.level[l].cat, i - 1)) {				if (i > p->p_cats.nprim)					return 0;				if (!ebitmap_get_bit(&levdatum->level->cat, i - 1))					/*					 * Category may not be associated with					 * sensitivity in low level.					 */					return 0;			}		}	}	if (c->role == OBJECT_R_VAL)		return 1;	/*	 * User must be authorized for the MLS range.	 */	if (!c->user || c->user > p->p_users.nprim)		return 0;	usrdatum = p->user_val_to_struct[c->user - 1];	for (rnode = usrdatum->ranges; rnode; rnode = rnode->next) {		if (mls_range_contains(rnode->range, c->range))			break;	}	if (!rnode)		/* user may not be associated with range */		return 0;	return 1;}/* * Set the MLS fields in the security context structure * `context' based on the string representation in * the string `*scontext'.  Update `*scontext' to * point to the end of the string representation of * the MLS fields. * * This function modifies the string in place, inserting * NULL characters to terminate the MLS fields. */int mls_context_to_sid(char oldc,		       char **scontext,		       struct context *context){	char delim;	char *scontextp, *p;	struct level_datum *levdatum;	struct cat_datum *catdatum;	int l, rc = -EINVAL;	if (!oldc) {		/* No MLS component to the security context.  Try		   to use a default 'unclassified' value. */		levdatum = hashtab_search(policydb.p_levels.table,		                          "unclassified");		if (!levdatum)			goto out;		context->range.level[0].sens = levdatum->level->sens;		context->range.level[1].sens = context->range.level[0].sens;		rc = 0;		goto out;	}	/* Extract low sensitivity. */	scontextp = p = *scontext;	while (*p && *p != ':' && *p != '-')		p++;	delim = *p;	if (delim != 0)		*p++ = 0;	for (l = 0; l < 2; l++) {		levdatum = hashtab_search(policydb.p_levels.table, scontextp);		if (!levdatum)			goto out;		context->range.level[l].sens = levdatum->level->sens;		if (delim == ':') {			/* Extract low category set. */			while (1) {				scontextp = p;				while (*p && *p != ',' && *p != '-')					p++;				delim = *p;				if (delim != 0)					*p++ = 0;				catdatum = hashtab_search(policydb.p_cats.table,				                          scontextp);				if (!catdatum)					goto out;				rc = ebitmap_set_bit(&context->range.level[l].cat,				                     catdatum->value - 1, 1);				if (rc)					goto out;				if (delim != ',')					break;			}		}		if (delim == '-') {			/* Extract high sensitivity. */			scontextp = p;			while (*p && *p != ':')				p++;			delim = *p;			if (delim != 0)				*p++ = 0;		} else			break;	}	if (l == 0) {		context->range.level[1].sens = context->range.level[0].sens;		rc = ebitmap_cpy(&context->range.level[1].cat,				 &context->range.level[0].cat);		if (rc)			goto out;	}	*scontext = ++p;	rc = 0;out:	return rc;}/* * Copies the MLS range from `src' into `dst'. */static inline int mls_copy_context(struct context *dst,				   struct context *src){	int l, rc = 0;	/* Copy the MLS range from the source context */	for (l = 0; l < 2; l++) {		dst->range.level[l].sens = src->range.level[l].sens;		rc = ebitmap_cpy(&dst->range.level[l].cat,				 &src->range.level[l].cat);		if (rc)			break;	}	return rc;}/* * Convert the MLS fields in the security context * structure `c' from the values specified in the * policy `oldp' to the values specified in the policy `newp'. */int mls_convert_context(struct policydb *oldp,			struct policydb *newp,			struct context *c){	struct level_datum *levdatum;	struct cat_datum *catdatum;	struct ebitmap bitmap;	int l, i;	for (l = 0; l < 2; l++) {		levdatum = hashtab_search(newp->p_levels.table,			oldp->p_sens_val_to_name[c->range.level[l].sens - 1]);		if (!levdatum)			return -EINVAL;		c->range.level[l].sens = levdatum->level->sens;		ebitmap_init(&bitmap);		for (i = 1; i <= ebitmap_length(&c->range.level[l].cat); i++) {			if (ebitmap_get_bit(&c->range.level[l].cat, i - 1)) {				int rc;				catdatum = hashtab_search(newp->p_cats.table,				         	oldp->p_cat_val_to_name[i - 1]);				if (!catdatum)					return -EINVAL;				rc = ebitmap_set_bit(&bitmap, catdatum->value - 1, 1);				if (rc)					return rc;			}		}		ebitmap_destroy(&c->range.level[l].cat);		c->range.level[l].cat = bitmap;	}	return 0;}int mls_compute_sid(struct context *scontext,		    struct context *tcontext,		    u16 tclass,		    u32 specified,		    struct context *newcontext){	switch (specified) {	case AVTAB_TRANSITION:	case AVTAB_CHANGE:		/* Use the process MLS attributes. */		return mls_copy_context(newcontext, scontext);	case AVTAB_MEMBER:		/* Only polyinstantiate the MLS attributes if		   the type is being polyinstantiated */		if (newcontext->type != tcontext->type) {			/* Use the process MLS attributes. */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产麻豆欧美日韩一区| 色婷婷综合久久久| 99久久精品久久久久久清纯| 久久综合九色欧美综合狠狠| 亚洲人午夜精品天堂一二香蕉| 国产一区二区精品久久99| 欧美一区二区国产| 日本亚洲电影天堂| 在线不卡欧美精品一区二区三区| 亚洲国产日韩一区二区| 欧美日韩一区二区三区高清 | 欧美日韩日日摸| 一区二区欧美精品| 在线观看一区二区视频| 一区二区三区不卡视频| 91福利在线导航| 亚洲成人资源网| 欧美精品日韩综合在线| 日本美女一区二区三区视频| 欧美丰满一区二区免费视频| 日韩专区欧美专区| 欧美一区二区播放| 精品中文字幕一区二区小辣椒 | 中文字幕综合网| 9久草视频在线视频精品| 自拍偷拍亚洲综合| 在线观看视频91| 五月天精品一区二区三区| 欧美一区二区三区四区五区 | 国产精品欧美一区二区三区| 成人国产精品免费观看动漫| 亚洲精品自拍动漫在线| 欧美三级韩国三级日本一级| 免费xxxx性欧美18vr| 久久蜜桃av一区精品变态类天堂 | 亚洲人成人一区二区在线观看 | 久久综合五月天婷婷伊人| 国产在线精品国自产拍免费| 国产片一区二区三区| 日本高清免费不卡视频| 看国产成人h片视频| 国产日韩欧美激情| 欧美亚洲动漫制服丝袜| 久久9热精品视频| ...av二区三区久久精品| 欧美酷刑日本凌虐凌虐| 成人午夜在线免费| 丝袜亚洲另类欧美综合| 国产亚洲欧美在线| 欧美在线短视频| 国产91清纯白嫩初高中在线观看| 亚洲综合999| 久久久综合激的五月天| 欧美三级午夜理伦三级中视频| 国内精品伊人久久久久av一坑| 亚洲日本免费电影| 精品国产一区二区亚洲人成毛片| 99久久久久久| 国产综合久久久久久久久久久久| 亚洲色图.com| 久久蜜桃av一区精品变态类天堂| 欧美午夜精品一区二区蜜桃| 国产精品亚洲午夜一区二区三区| 午夜久久久影院| 亚洲欧洲av色图| 久久综合九色综合97婷婷女人| 欧美日韩一二区| 99热这里都是精品| 极品美女销魂一区二区三区 | 黄一区二区三区| 一区二区三区蜜桃| 久久夜色精品一区| 欧美日韩一区二区三区不卡| 99久久婷婷国产综合精品电影 | 国产精品久久久爽爽爽麻豆色哟哟| 欧美精品乱码久久久久久按摩| 91丝袜美女网| 国产成人在线免费观看| 捆绑调教一区二区三区| 视频一区免费在线观看| 亚洲精品视频观看| 亚洲欧洲日韩在线| 国产欧美精品一区二区色综合朱莉| 欧美日韩国产综合草草| 在线免费不卡电影| 99re成人在线| av福利精品导航| 成人午夜视频福利| 丰满少妇在线播放bd日韩电影| 国产九色精品成人porny| 久久国产人妖系列| 久久精品噜噜噜成人av农村| 日韩av电影一区| 日本在线播放一区二区三区| 亚洲mv在线观看| 五月激情综合色| 天天爽夜夜爽夜夜爽精品视频| 亚洲一二三四区不卡| 亚洲一区视频在线观看视频| 一片黄亚洲嫩模| 国产精品久久影院| 亚洲国产精品成人综合| 国产欧美一区二区三区沐欲| 日韩精品一区在线| 9191成人精品久久| 欧美挠脚心视频网站| 91精品国产日韩91久久久久久| 日韩一区二区在线播放| 欧美午夜电影网| 欧美午夜不卡在线观看免费| 欧美色手机在线观看| 欧美日韩午夜影院| 欧美一级xxx| 欧美精品一区二区高清在线观看| 久久综合色天天久久综合图片| 中文字幕国产一区| 亚洲精选视频免费看| 五月婷婷欧美视频| 麻豆精品在线播放| 国产超碰在线一区| 日本黄色一区二区| 欧美一卡二卡在线| 欧美极品xxx| 亚洲一区二区三区视频在线| 日本大胆欧美人术艺术动态| 国产高清视频一区| 91久久香蕉国产日韩欧美9色| 制服丝袜在线91| 亚洲国产高清aⅴ视频| 一区二区在线免费观看| 蜜桃一区二区三区四区| 国产91对白在线观看九色| 在线免费视频一区二区| 欧美成人bangbros| 国产精品福利一区二区| 日日摸夜夜添夜夜添亚洲女人| 久久99国产精品久久| 99视频国产精品| 日韩三级在线免费观看| 成人免费在线视频| 日av在线不卡| 91亚洲永久精品| 欧美不卡一二三| 亚洲欧美另类图片小说| 国产在线不卡一区| 欧美在线色视频| 久久精品网站免费观看| 亚洲一区二区三区四区在线免费观看| 久久国产精品99久久人人澡| 91在线视频播放地址| 日韩一级片网址| 亚洲一区二区在线免费看| 国产成人高清在线| 欧美日韩激情一区二区三区| 中文字幕在线不卡一区| 精彩视频一区二区三区| 欧美日韩一区二区三区四区| 久久中文娱乐网| 亚洲成人动漫在线观看| 成人av中文字幕| 制服丝袜亚洲播放| 亚洲v日本v欧美v久久精品| 国产成人av电影在线| 日韩一级黄色片| 五月激情综合婷婷| 91国偷自产一区二区开放时间 | 91啪在线观看| 2019国产精品| 免费日韩伦理电影| 欧美日韩小视频| 一区二区三区国产豹纹内裤在线| 成人免费看视频| 久久精品亚洲国产奇米99| 麻豆视频一区二区| 日韩视频永久免费| 亚洲成人1区2区| 欧美久久久久免费| 亚洲综合一区二区三区| 色综合色狠狠综合色| 亚洲人成小说网站色在线| 99久久99久久综合| 国产精品丝袜91| 成人av免费观看| 中文无字幕一区二区三区 | 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 国产精品影音先锋| 久久中文字幕电影| aaa亚洲精品| 午夜日韩在线电影| 日韩精品中午字幕| 99视频在线精品| 午夜精品一区在线观看| 日韩一区二区精品葵司在线| 国产精品一区二区不卡| 亚洲精品视频一区| 日韩欧美国产精品| www.亚洲色图| 丝袜美腿亚洲一区二区图片| 国产日韩欧美不卡在线| 欧美午夜在线一二页|