⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 convm2d.c

📁 在x86平台上运行不可信任代码的sandbox。
💻 C
字号:
#include "u.h"#include "lib.h"#include "fcall.h"intstatcheck(uchar *buf, uint nbuf){	uchar *ebuf;	int i;	ebuf = buf + nbuf;	if(nbuf < STATFIXLEN || nbuf != BIT16SZ + GBIT16(buf))		return -1;	buf += STATFIXLEN - 4 * BIT16SZ;	for(i = 0; i < 4; i++){		if(buf + BIT16SZ > ebuf)			return -1;		buf += BIT16SZ + GBIT16(buf);	}	if(buf != ebuf)		return -1;	return 0;}static char nullstring[] = "";uintconvM2D(uchar *buf, uint nbuf, Dir *d, char *strs){	uchar *p, *ebuf;	char *sv[4];	int i, ns;	if(nbuf < STATFIXLEN)		return 0; 	p = buf;	ebuf = buf + nbuf;	p += BIT16SZ;	/* ignore size */	d->type = GBIT16(p);	p += BIT16SZ;	d->dev = GBIT32(p);	p += BIT32SZ;	d->qid.type = GBIT8(p);	p += BIT8SZ;	d->qid.vers = GBIT32(p);	p += BIT32SZ;	d->qid.path = GBIT64(p);	p += BIT64SZ;	d->mode = GBIT32(p);	p += BIT32SZ;	d->atime = GBIT32(p);	p += BIT32SZ;	d->mtime = GBIT32(p);	p += BIT32SZ;	d->length = GBIT64(p);	p += BIT64SZ;	for(i = 0; i < 4; i++){		if(p + BIT16SZ > ebuf)			return 0;		ns = GBIT16(p);		p += BIT16SZ;		if(p + ns > ebuf)			return 0;		if(strs){			sv[i] = strs;			memmove(strs, p, ns);			strs += ns;			*strs++ = '\0';		}		p += ns;	}	if(strs){		d->name = sv[0];		d->uid = sv[1];		d->gid = sv[2];		d->muid = sv[3];	}else{		d->name = nullstring;		d->uid = nullstring;		d->gid = nullstring;		d->muid = nullstring;	}		return p - buf;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -