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

📄 ebz2.c

📁 在x86平台上运行不可信任代码的sandbox。
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <stdarg.h>#include <unistd.h>#include <errno.h>#include "bzlib.h"#define BUFSIZE (64*1024)static bz_stream s;static char inbuf[BUFSIZE];static char outbuf[BUFSIZE];void fatal(const char *fmt, ...){	va_list ap;	va_start(ap, fmt);	vfprintf(stderr, fmt, ap);	va_end(ap);	fputc('\n', stderr);	exit(2);}void bz_internal_error (int errcode){	fatal("Internal bzip2 error: %d", errcode);}int main(int argc, char **argv){printf("malloc3: %08x\n", malloc(123));printf("malloc3: %08x\n", malloc(123));printf("malloc3: %08x\n", malloc(123));printf("malloc3: %08x\n", malloc(123));printf("malloc4: %08x\n", malloc(1234));printf("malloc4: %08x\n", malloc(1234));printf("malloc4: %08x\n", malloc(1234));printf("malloc4: %08x\n", malloc(1234));printf("malloc5: %08x\n", malloc(12345));printf("malloc5: %08x\n", malloc(12345));printf("malloc5: %08x\n", malloc(12345));printf("malloc5: %08x\n", malloc(12345));printf("malloc6: %08x\n", malloc(123456));printf("malloc6: %08x\n", malloc(123456));printf("malloc6: %08x\n", malloc(123456));printf("malloc6: %08x\n", malloc(123456));printf("malloc7: %08x\n", malloc(1234567));printf("malloc7: %08x\n", malloc(1234567));printf("malloc7: %08x\n", malloc(1234567));printf("malloc7: %08x\n", malloc(1234567));	int rc = BZ2_bzCompressInit(&s, 9, 0, 0);	if (rc != BZ_OK)		fatal("BZ2_bzCompressInit: %d", rc);	// Compress the input file	ssize_t inlen;	while ((inlen = read(STDIN_FILENO, inbuf, BUFSIZE)) > 0) {		// Compress this input block		s.next_in = inbuf;		s.avail_in = inlen;		do {			s.next_out = outbuf;			s.avail_out = BUFSIZE;			if ((rc = BZ2_bzCompress(&s, BZ_RUN)) != BZ_RUN_OK)				fatal("BZ2_bzCompress: %d", rc);			// Write any output the decompressor produced			ssize_t outlen = write(STDOUT_FILENO, outbuf,						BUFSIZE - s.avail_out);			if (outlen < 0)				fatal("write error: %d", errno);			// Continue decompressing the input block until done		} while (s.avail_in > 0);	}	if (inlen < 0)		fatal("read error: %d", errno);	// Flush the output	s.avail_in = 0;	int done = 0;	do {		s.next_out = outbuf;		s.avail_out = BUFSIZE;		int rc = BZ2_bzCompress(&s, BZ_FINISH);		if (rc == BZ_STREAM_END)			done = 1;		else if (rc != BZ_FINISH_OK)			fatal("BZ2_bzCompress: %d", rc);		// Write compressor output		ssize_t outlen = write(STDOUT_FILENO, outbuf,					BUFSIZE - s.avail_out);		if (outlen < 0)			fatal("write error: %d", errno);	} while (!done);	rc = BZ2_bzCompressEnd(&s);	if (rc != BZ_OK)		fatal("BZ2_bzCompressEnd: %d", rc);	return 0;}

⌨️ 快捷键说明

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