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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? security.c

?? 《嵌入式系統設計與實例開發實驗教材二源碼》Linux內核移植與編譯實驗
?? C
字號:
/*kHTTPd -- the next generationPermissions/Security functions*//**************************************************************** *	This program is free software; you can redistribute it and/or modify *	it under the terms of the GNU General Public License as published by *	the Free Software Foundation; either version 2, or (at your option) *	any later version. * *	This program is distributed in the hope that it will be useful, *	but WITHOUT ANY WARRANTY; without even the implied warranty of *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *	GNU General Public License for more details. * *	You should have received a copy of the GNU General Public License *	along with this program; if not, write to the Free Software *	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * ****************************************************************/#include <linux/kernel.h>#include <linux/errno.h>#include <linux/slab.h>#include <linux/net.h>#include <linux/sched.h>#include <linux/skbuff.h>#include <linux/smp_lock.h>#include <linux/un.h>#include <linux/unistd.h>#include <net/ip.h>#include <net/sock.h>#include <net/tcp.h>#include <asm/atomic.h>#include <asm/semaphore.h>#include <asm/processor.h>#include <asm/uaccess.h>#include <linux/file.h>#include "sysctl.h"#include "security.h"#include "prototypes.h"/*The basic security function answers "Userspace" when any one of the following conditions is met:1) The filename contains a "?" (this is before % decoding, all others are                                 after % decoding)2) The filename doesn't start with a "/"                                3) The file does not exist4) The file does not have enough permissions    (sysctl-configurable, default = worldreadble)5) The file has any of the "forbidden" permissions    (sysctl-configurable, default = execute, directory and sticky)6) The filename contains a string as defined in the "Dynamic" list.*/	/* Prototypes */static void DecodeHexChars(char *URL);static struct DynamicString *DynamicList=NULL;	/*The function "OpenFileForSecurity" returns either the "struct file" pointerof the file, or NULL. NULL means "let userspace handle it". */struct file *OpenFileForSecurity(char *Filename){	struct file *filp;	struct DynamicString *List;	umode_t permission;			EnterFunction("OpenFileForSecurity");	if (Filename==NULL)		return NULL;		if (strlen(Filename)>=256 ) return NULL;  /* Sanity check */		/* Rule no. 1  -- No "?" characters */#ifndef BENCHMARK		if (strchr(Filename,'?')!=NULL)		return NULL;	/* Intermediate step: decode all %hex sequences */		DecodeHexChars(Filename);	/* Rule no. 2  -- Must start with a "/" */			if (Filename[0]!='/')		return NULL;		#endif	/* Rule no. 3 -- Does the file exist ? */	filp = filp_open(Filename, O_RDONLY, 0);		if (IS_ERR(filp))		return NULL;#ifndef BENCHMARK			permission = filp->f_dentry->d_inode->i_mode;		/* Rule no. 4 : must have enough permissions */			if ((permission & sysctl_khttpd_permreq)==0)	{		if (filp!=NULL)			fput(filp);		filp=NULL;		return NULL;	}			/* Rule no. 5 : cannot have "forbidden" permission */			if ((permission & sysctl_khttpd_permforbid)!=0)	{		if (filp!=NULL)			fput(filp);		filp=NULL;		return NULL;	}			/* Rule no. 6 : No string in DynamicList can be a			substring of the filename */					List = DynamicList;		while (List!=NULL)	{		if (strstr(Filename,List->value)!=NULL)		{			if (filp!=NULL)				fput(filp);			filp=NULL;			return NULL;		}		List = List->Next;	}	#endif		LeaveFunction("OpenFileForSecurity - success");	return filp;}/* DecodeHexChars does the actual %HEX decoding, in place. In place is possible because strings only get shorter by this.*/static void DecodeHexChars(char *URL){	char *Source,*Dest;	int val,val2;		EnterFunction("DecodeHexChars");		Source = strchr(URL,'%');		if (Source==NULL) 		return;			Dest = Source;		while (*Source!=0)	{		if (*Source=='%')		{			Source++;			val = *Source;						if (val>'Z') val-=0x20;			val = val - '0';			if (val<0) val=0; 			if (val>9) val-=7;			if (val>15) val=15;						Source++;			val2 = *Source;						if (val2>'Z') val2-=0x20;			val2 = val2 - '0';			if (val2<0) val2=0; 			if (val2>9) val2-=7;			if (val2>15) val2=15;			*Dest=val*16+val2;		} else *Dest = *Source;		Dest++;		Source++;	}	*Dest=0;			LeaveFunction("DecodeHexChars");}void AddDynamicString(const char *String){	struct DynamicString *Temp;		EnterFunction("AddDynamicString");		Temp = (struct DynamicString*)kmalloc(sizeof(struct DynamicString),(int)GFP_KERNEL);		if (Temp==NULL) 		return;			memset(Temp->value,0,sizeof(Temp->value));	strncpy(Temp->value,String,sizeof(Temp->value)-1);		Temp->Next = DynamicList;	DynamicList = Temp;		LeaveFunction("AddDynamicString");}void GetSecureString(char *String){	struct DynamicString *Temp;	int max;		EnterFunction("GetSecureString");		*String = 0;		memset(String,0,255);		strncpy(String,"Dynamic strings are : -",255);	Temp = DynamicList;	while (Temp!=NULL)	{		max=253 - strlen(String) - strlen(Temp->value);		strncat(String,Temp->value,max);		max=253 - strlen(String) - 3;		strncat(String,"- -",max);		Temp = Temp->Next;	}			LeaveFunction("GetSecureString");}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产三级| 亚洲成人免费视频| 久久女同精品一区二区| 日韩一区和二区| 欧美一区日韩一区| 欧美成人福利视频| 久久久不卡影院| 中文字幕免费不卡| 国产精品你懂的| 亚洲精品久久嫩草网站秘色| 夜夜嗨av一区二区三区四季av| 中文字幕永久在线不卡| 亚洲欧美一区二区久久 | 欧美在线观看你懂的| 欧美三区在线观看| 日韩免费视频一区| 国产欧美日韩综合| 亚洲美女屁股眼交| 午夜精品久久久| 国产一区二区三区av电影| 国产精品亚洲一区二区三区妖精 | av电影一区二区| 色又黄又爽网站www久久| 日本韩国欧美三级| 日韩精品中文字幕一区| 国产欧美日韩视频一区二区| 亚洲欧美日韩国产手机在线| 亚洲不卡av一区二区三区| 日韩国产欧美在线观看| 国产激情视频一区二区在线观看| 色av一区二区| 精品国产99国产精品| 国产精品电影院| 石原莉奈在线亚洲三区| 国产91丝袜在线播放九色| 欧美亚男人的天堂| 久久久久久一级片| 五月天欧美精品| 成人黄页在线观看| 日韩欧美第一区| 一区二区三区四区不卡在线| 激情五月婷婷综合网| 色94色欧美sute亚洲线路一ni| 日韩精品一区在线观看| 一区二区免费看| 国产在线视频一区二区三区| 欧美mv日韩mv亚洲| 亚洲美女视频在线| 国产成人av福利| 91精品国产91久久久久久一区二区 | 一区二区三区av电影| 激情综合色播激情啊| 欧美日韩国产美| 亚洲日本一区二区三区| 美国毛片一区二区三区| 欧美日韩黄色影视| 亚洲乱码国产乱码精品精的特点| 国精产品一区一区三区mba桃花| 在线免费视频一区二区| 中文字幕色av一区二区三区| 韩国毛片一区二区三区| 欧美精品vⅰdeose4hd| 亚洲精品美腿丝袜| 日本久久电影网| 亚洲美女淫视频| 色综合色综合色综合| 国产精品久久影院| 成人三级伦理片| 中文字幕乱码久久午夜不卡| 国内精品第一页| 久久久久久久免费视频了| 免费久久99精品国产| 欧美一二区视频| 极品尤物av久久免费看| 精品国产乱码久久久久久久久| 免费人成黄页网站在线一区二区| 欧美精选一区二区| 青草av.久久免费一区| 日韩免费观看高清完整版在线观看| 偷拍亚洲欧洲综合| 日韩一区二区麻豆国产| 老司机一区二区| 久久久久国产一区二区三区四区| 狠狠色综合日日| 国产精品萝li| 色婷婷久久综合| 亚洲宅男天堂在线观看无病毒| 欧美在线看片a免费观看| 日韩和欧美一区二区| 欧美大片在线观看| 成人性生交大片免费看中文网站 | 97精品视频在线观看自产线路二 | 欧美精品123区| 久久激情五月激情| 日本一区二区动态图| 91丨porny丨中文| 午夜精品一区二区三区三上悠亚| 欧美一二三四在线| 国产电影一区二区三区| 自拍偷自拍亚洲精品播放| 欧美日韩一区精品| 国模大尺度一区二区三区| 亚洲人成在线播放网站岛国| 欧美日本视频在线| 福利电影一区二区| 午夜亚洲国产au精品一区二区| 精品久久国产老人久久综合| 99精品在线观看视频| 免费观看日韩av| 亚洲美女视频在线| 精品国产123| 欧美在线999| 国产美女一区二区| 亚洲国产精品人人做人人爽| 中文天堂在线一区| 在线视频欧美精品| 国产成人精品一区二| 亚洲综合色区另类av| 久久久久久久久久久久久夜| 欧美三级中文字幕| 成人午夜电影小说| 美女国产一区二区三区| 亚洲视频在线观看一区| 久久影院午夜论| 制服丝袜成人动漫| 日本韩国精品在线| 成人自拍视频在线| 精品在线播放免费| 蜜臀av性久久久久蜜臀aⅴ四虎 | 337p亚洲精品色噜噜噜| 91网站视频在线观看| 国产精品一区二区三区99| 蜜桃视频第一区免费观看| 一区二区三区不卡视频| 国产精品理论在线观看| 精品盗摄一区二区三区| 91精品在线麻豆| 欧洲精品在线观看| 99riav久久精品riav| 成人毛片老司机大片| 激情丁香综合五月| 狠狠色综合日日| 精品一区二区三区在线观看国产 | 国产精品欧美久久久久一区二区| 精品对白一区国产伦| 日韩一区国产二区欧美三区| 欧美日韩一区二区不卡| 欧美日韩三级一区二区| 欧美日韩三级一区| 欧美人与z0zoxxxx视频| 欧美三日本三级三级在线播放| 91在线视频网址| 色婷婷国产精品| 91久久精品一区二区二区| 色综合激情五月| 欧美日韩一区二区不卡| 欧美一区二区三区日韩| 日韩亚洲欧美综合| 精品久久人人做人人爰| 久久蜜桃一区二区| 国产日产欧美一区二区三区| 国产精品久久久久9999吃药| 日韩伦理电影网| 一区二区三区欧美日韩| 亚洲国产日韩一级| 偷拍自拍另类欧美| 国产在线精品免费| www.亚洲色图| 欧美影院一区二区| 日韩精品最新网址| 国产欧美精品一区aⅴ影院 | 91久久奴性调教| 制服视频三区第一页精品| 日韩精品专区在线影院观看| 日韩美女一区二区三区| 久久久99免费| 日韩理论片一区二区| 亚洲国产乱码最新视频| 久久国产三级精品| 北岛玲一区二区三区四区| 在线看国产一区二区| 日韩精品一区二区三区视频播放 | 亚洲综合视频网| 激情文学综合网| 色成人在线视频| 精品免费一区二区三区| 亚洲欧洲另类国产综合| 欧美精品一区二区三区蜜桃 | 日韩精品一区二区三区中文不卡| 91激情在线视频| 91激情在线视频| 日韩二区三区四区| 久久99热国产| 国产精品无遮挡| 亚洲国产综合人成综合网站| 日日夜夜一区二区| 成人综合在线观看| 欧美日韩精品专区| 久久久不卡影院| 蜜桃视频在线观看一区二区|