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

📄 convd2m.c

📁 在x86平台上运行不可信任代码的sandbox。
💻 C
字号:
#include "u.h"#include "lib.h"#include "fcall.h"uintsizeD2M(Dir *d){	char *sv[4];	int i, ns;	sv[0] = d->name;	sv[1] = d->uid;	sv[2] = d->gid;	sv[3] = d->muid;	ns = 0;	for(i = 0; i < 4; i++)		if(sv[i])			ns += strlen(sv[i]);	return STATFIXLEN + ns;}uintconvD2M(Dir *d, uchar *buf, uint nbuf){	uchar *p, *ebuf;	char *sv[4];	int i, ns, nsv[4], ss;	if(nbuf < BIT16SZ)		return 0;	p = buf;	ebuf = buf + nbuf;	sv[0] = d->name;	sv[1] = d->uid;	sv[2] = d->gid;	sv[3] = d->muid;	ns = 0;	for(i = 0; i < 4; i++){		if(sv[i])			nsv[i] = strlen(sv[i]);		else			nsv[i] = 0;		ns += nsv[i];	}	ss = STATFIXLEN + ns;	/* set size before erroring, so user can know how much is needed */	/* note that length excludes count field itself */	PBIT16(p, ss-BIT16SZ);	p += BIT16SZ;	if(ss > nbuf)		return BIT16SZ;	PBIT16(p, d->type);	p += BIT16SZ;	PBIT32(p, d->dev);	p += BIT32SZ;	PBIT8(p, d->qid.type);	p += BIT8SZ;	PBIT32(p, d->qid.vers);	p += BIT32SZ;	PBIT64(p, d->qid.path);	p += BIT64SZ;	PBIT32(p, d->mode);	p += BIT32SZ;	PBIT32(p, d->atime);	p += BIT32SZ;	PBIT32(p, d->mtime);	p += BIT32SZ;	PBIT64(p, d->length);	p += BIT64SZ;	for(i = 0; i < 4; i++){		ns = nsv[i];		if(p + ns + BIT16SZ > ebuf)			return 0;		PBIT16(p, ns);		p += BIT16SZ;		if(ns)			memmove(p, sv[i], ns);		p += ns;	}	if(ss != p - buf)		return 0;	return p - buf;}

⌨️ 快捷键说明

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