From owner-svn-soc-all@FreeBSD.ORG Tue Jul 23 14:26:14 2013 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 6B35597C for ; Tue, 23 Jul 2013 14:26:14 +0000 (UTC) (envelope-from dpl@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5B37E216F for ; Tue, 23 Jul 2013 14:26:14 +0000 (UTC) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.7/8.14.7) with ESMTP id r6NEQEOj059882 for ; Tue, 23 Jul 2013 14:26:14 GMT (envelope-from dpl@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.7/8.14.6/Submit) id r6NEQDdm059876 for svn-soc-all@FreeBSD.org; Tue, 23 Jul 2013 14:26:13 GMT (envelope-from dpl@FreeBSD.org) Date: Tue, 23 Jul 2013 14:26:13 GMT Message-Id: <201307231426.r6NEQDdm059876@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to dpl@FreeBSD.org using -f From: dpl@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r255064 - soc2013/dpl/head/lib/libz MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Jul 2013 14:26:14 -0000 Author: dpl Date: Tue Jul 23 14:26:13 2013 New Revision: 255064 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=255064 Log: Compartmentalize crc32. Modified: soc2013/dpl/head/lib/libz/Makefile soc2013/dpl/head/lib/libz/crc32.c soc2013/dpl/head/lib/libz/gzlib.c soc2013/dpl/head/lib/libz/zconf.h soc2013/dpl/head/lib/libz/zutil.h Modified: soc2013/dpl/head/lib/libz/Makefile ============================================================================== --- soc2013/dpl/head/lib/libz/Makefile Tue Jul 23 13:56:38 2013 (r255063) +++ soc2013/dpl/head/lib/libz/Makefile Tue Jul 23 14:26:13 2013 (r255064) @@ -2,6 +2,9 @@ # $FreeBSD: head/lib/libz/Makefile 232263 2012-02-28 18:30:18Z dim $ # +#TODEL +CFLAGS+= -Wall -g -fno-color-diagnostics + LIB= z SHLIBDIR?= /lib SHLIB_MAJOR= 6 @@ -13,8 +16,6 @@ # -Wstrict-prototypes -Wmissing-prototypes CFLAGS+= -DHAS_snprintf -DHAS_vsnprintf -I${.CURDIR} -#TODEL -CFLAGS+= -Wall -g -fno-color-output WARNS?= 3 CLEANFILES+= example.o example foo.gz minigzip.o minigzip Modified: soc2013/dpl/head/lib/libz/crc32.c ============================================================================== --- soc2013/dpl/head/lib/libz/crc32.c Tue Jul 23 13:56:38 2013 (r255063) +++ soc2013/dpl/head/lib/libz/crc32.c Tue Jul 23 14:26:13 2013 (r255064) @@ -37,6 +37,8 @@ # define BYFOUR #endif #ifdef BYFOUR + unsigned long crc32_ OF((unsigned long, + const unsigned char FAR *, uInt)); local unsigned long crc32_little OF((unsigned long, const unsigned char FAR *, unsigned)); local unsigned long crc32_big OF((unsigned long, @@ -206,6 +208,27 @@ const unsigned char FAR *buf; uInt len; { + long ret; + #ifdef CAPSICUM + int forkpid; + if ( (forkpid = fork()) == 0 ){ + cap_enter(); + #endif + ret = crc32_(crc, buf, len); + #ifdef CAPSICUM + return ret; + } else if ( forkpid != 0) { + wait(NULL); + } + #endif + return ret; +} + +unsigned long ZEXPORT crc32_(crc, buf, len) + unsigned long crc; + const unsigned char FAR *buf; + uInt len; +{ if (buf == Z_NULL) return 0UL; #ifdef DYNAMIC_CRC_TABLE Modified: soc2013/dpl/head/lib/libz/gzlib.c ============================================================================== --- soc2013/dpl/head/lib/libz/gzlib.c Tue Jul 23 13:56:38 2013 (r255063) +++ soc2013/dpl/head/lib/libz/gzlib.c Tue Jul 23 14:26:13 2013 (r255064) @@ -18,14 +18,6 @@ #endif #endif -#if defined(__FreeBSD__) -# include -# if __FreeBSD_version >= 900041 -# define CAPSICUM -# include -# endif -#endif - /* Local functions */ local void gz_reset OF((gz_statep)); local gzFile gz_open OF((const void *, int, const char *)); Modified: soc2013/dpl/head/lib/libz/zconf.h ============================================================================== --- soc2013/dpl/head/lib/libz/zconf.h Tue Jul 23 13:56:38 2013 (r255063) +++ soc2013/dpl/head/lib/libz/zconf.h Tue Jul 23 14:26:13 2013 (r255064) @@ -480,11 +480,25 @@ /* * This is hard-configured for FreeBSD. */ -#define z_off_t off_t +#define z_off_t off_t #ifndef _FILE_OFFSET_BITS #define _FILE_OFFSET_BITS 64 #endif +/* + * With Capsicum, we get a compartmentalized, and securer lib. + */ +#if defined(__FreeBSD__) +# include +# if __FreeBSD_version >= 900041 +# define CAPSICUM +# include +# include +# include +# include +# endif +#endif + #ifndef z_off_t # define z_off_t long #endif Modified: soc2013/dpl/head/lib/libz/zutil.h ============================================================================== --- soc2013/dpl/head/lib/libz/zutil.h Tue Jul 23 13:56:38 2013 (r255063) +++ soc2013/dpl/head/lib/libz/zutil.h Tue Jul 23 14:26:13 2013 (r255064) @@ -4,8 +4,8 @@ */ /* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. + part of the implementation of the compression library and is + subject to change. Applications should only use zlib.h. */ /* @(#) $Id$ */ @@ -14,35 +14,35 @@ #define ZUTIL_H #ifdef HAVE_HIDDEN -# define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) +# define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) #else -# define ZLIB_INTERNAL +# define ZLIB_INTERNAL #endif #include "zlib.h" #if defined(STDC) && !defined(Z_SOLO) -# if !(defined(_WIN32_WCE) && defined(_MSC_VER)) -# include -# endif -# include -# include +# if !(defined(_WIN32_WCE) && defined(_MSC_VER)) +# include +# endif +# include +# include #endif #ifdef Z_SOLO - typedef long ptrdiff_t; /* guess -- will be caught if guess is wrong */ + typedef long ptrdiff_t; /* guess -- will be caught if guess is wrong */ #endif #ifndef local -# define local static +# define local static #endif /* compile with -Dlocal if your debugger can't find static symbols */ -typedef unsigned char uch; +typedef unsigned char uch; typedef uch FAR uchf; typedef unsigned short ush; typedef ush FAR ushf; -typedef unsigned long ulg; +typedef unsigned long ulg; extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ /* (size given to avoid silly warnings with Visual C++) */ @@ -50,204 +50,218 @@ #define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)] #define ERR_RETURN(strm,err) \ - return (strm->msg = ERR_MSG(err), (err)) + return (strm->msg = ERR_MSG(err), (err)) /* To be used only when the state is known to be valid */ - /* common constants */ + /* common constants */ #ifndef DEF_WBITS -# define DEF_WBITS MAX_WBITS +# define DEF_WBITS MAX_WBITS #endif /* default windowBits for decompression. MAX_WBITS is for compression only */ #if MAX_MEM_LEVEL >= 8 -# define DEF_MEM_LEVEL 8 +# define DEF_MEM_LEVEL 8 #else -# define DEF_MEM_LEVEL MAX_MEM_LEVEL +# define DEF_MEM_LEVEL MAX_MEM_LEVEL #endif /* default memLevel */ #define STORED_BLOCK 0 #define STATIC_TREES 1 -#define DYN_TREES 2 +#define DYN_TREES 2 /* The three kinds of block type */ -#define MIN_MATCH 3 -#define MAX_MATCH 258 +#define MIN_MATCH 3 +#define MAX_MATCH 258 /* The minimum and maximum match lengths */ #define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */ - /* target dependencies */ + /* target dependencies */ #if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32)) -# define OS_CODE 0x00 -# ifndef Z_SOLO -# if defined(__TURBOC__) || defined(__BORLANDC__) -# if (__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__)) - /* Allow compilation with ANSI keywords only enabled */ - void _Cdecl farfree( void *block ); - void *_Cdecl farmalloc( unsigned long nbytes ); -# else -# include -# endif -# else /* MSC or DJGPP */ -# include +# define OS_CODE 0x00 +# ifndef Z_SOLO +# if defined(__TURBOC__) || defined(__BORLANDC__) +# if (__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__)) + /* Allow compilation with ANSI keywords only enabled */ + void _Cdecl farfree( void *block ); + void *_Cdecl farmalloc( unsigned long nbytes ); +# else +# include +# endif +# else /* MSC or DJGPP */ +# include +# endif # endif -# endif #endif #ifdef AMIGA -# define OS_CODE 0x01 +# define OS_CODE 0x01 #endif #if defined(VAXC) || defined(VMS) -# define OS_CODE 0x02 -# define F_OPEN(name, mode) \ - fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512") +# define OS_CODE 0x02 +# define F_OPEN(name, mode) \ + fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512") #endif #if defined(ATARI) || defined(atarist) -# define OS_CODE 0x05 +# define OS_CODE 0x05 #endif #ifdef OS2 -# define OS_CODE 0x06 -# if defined(M_I86) && !defined(Z_SOLO) -# include -# endif +# define OS_CODE 0x06 +# if defined(M_I86) && !defined(Z_SOLO) +# include +# endif #endif #if defined(MACOS) || defined(TARGET_OS_MAC) -# define OS_CODE 0x07 -# ifndef Z_SOLO -# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os -# include /* for fdopen */ -# else -# ifndef fdopen -# define fdopen(fd,mode) NULL /* No fdopen() */ -# endif +# define OS_CODE 0x07 +# ifndef Z_SOLO +# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os +# include /* for fdopen */ +# else +# ifndef fdopen +# define fdopen(fd,mode) NULL /* No fdopen() */ +# endif +# endif # endif -# endif #endif #ifdef TOPS20 -# define OS_CODE 0x0a +# define OS_CODE 0x0a #endif #ifdef WIN32 -# ifndef __CYGWIN__ /* Cygwin is Unix, not Win32 */ -# define OS_CODE 0x0b -# endif +# ifndef __CYGWIN__ /* Cygwin is Unix, not Win32 */ +# define OS_CODE 0x0b +# endif #endif #ifdef __50SERIES /* Prime/PRIMOS */ -# define OS_CODE 0x0f +# define OS_CODE 0x0f #endif #if defined(_BEOS_) || defined(RISCOS) -# define fdopen(fd,mode) NULL /* No fdopen() */ +# define fdopen(fd,mode) NULL /* No fdopen() */ #endif #if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX -# if defined(_WIN32_WCE) -# define fdopen(fd,mode) NULL /* No fdopen() */ -# ifndef _PTRDIFF_T_DEFINED - typedef int ptrdiff_t; -# define _PTRDIFF_T_DEFINED -# endif -# else -# define fdopen(fd,type) _fdopen(fd,type) -# endif +# if defined(_WIN32_WCE) +# define fdopen(fd,mode) NULL /* No fdopen() */ +# ifndef _PTRDIFF_T_DEFINED + typedef int ptrdiff_t; +# define _PTRDIFF_T_DEFINED +# endif +# else +# define fdopen(fd,type) _fdopen(fd,type) +# endif #endif #if defined(__BORLANDC__) && !defined(MSDOS) - #pragma warn -8004 - #pragma warn -8008 - #pragma warn -8066 + #pragma warn -8004 + #pragma warn -8008 + #pragma warn -8066 +#endif + +/* + * With Capsicum, we get a compartmentalized, and securer lib. + */ +#if defined(__FreeBSD__) +# include +# if __FreeBSD_version >= 900041 +# define CAPSICUM +# include +# include +# include +# include +# endif #endif /* provide prototypes for these when building zlib without LFS */ #if !defined(_WIN32) && \ - (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) - ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); + (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); #endif - /* common defaults */ + /* common defaults */ #ifndef OS_CODE -# define OS_CODE 0x03 /* assume Unix */ +# define OS_CODE 0x03 /* assume Unix */ #endif #ifndef F_OPEN -# define F_OPEN(name, mode) fopen((name), (mode)) +# define F_OPEN(name, mode) fopen((name), (mode)) #endif - /* functions */ + /* functions */ #if defined(pyr) || defined(Z_SOLO) -# define NO_MEMCPY +# define NO_MEMCPY #endif #if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__) /* Use our own functions for small and medium model with MSC <= 5.0. - * You may have to use the same strategy for Borland C (untested). - * The __SC__ check is for Symantec. - */ -# define NO_MEMCPY + * You may have to use the same strategy for Borland C (untested). + * The __SC__ check is for Symantec. + */ +# define NO_MEMCPY #endif #if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY) -# define HAVE_MEMCPY +# define HAVE_MEMCPY #endif #ifdef HAVE_MEMCPY -# ifdef SMALL_MEDIUM /* MSDOS small or medium model */ -# define zmemcpy _fmemcpy -# define zmemcmp _fmemcmp -# define zmemzero(dest, len) _fmemset(dest, 0, len) -# else -# define zmemcpy memcpy -# define zmemcmp memcmp -# define zmemzero(dest, len) memset(dest, 0, len) -# endif +# ifdef SMALL_MEDIUM /* MSDOS small or medium model */ +# define zmemcpy _fmemcpy +# define zmemcmp _fmemcmp +# define zmemzero(dest, len) _fmemset(dest, 0, len) +# else +# define zmemcpy memcpy +# define zmemcmp memcmp +# define zmemzero(dest, len) memset(dest, 0, len) +# endif #else - void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len)); - int ZLIB_INTERNAL zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len)); - void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len)); + void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len)); + int ZLIB_INTERNAL zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len)); + void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len)); #endif /* Diagnostic functions */ #ifdef DEBUG -# include - extern int ZLIB_INTERNAL z_verbose; - extern void ZLIB_INTERNAL z_error OF((char *m)); -# define Assert(cond,msg) {if(!(cond)) z_error(msg);} -# define Trace(x) {if (z_verbose>=0) fprintf x ;} -# define Tracev(x) {if (z_verbose>0) fprintf x ;} -# define Tracevv(x) {if (z_verbose>1) fprintf x ;} -# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;} -# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;} +# include + extern int ZLIB_INTERNAL z_verbose; + extern void ZLIB_INTERNAL z_error OF((char *m)); +# define Assert(cond,msg) {if(!(cond)) z_error(msg);} +# define Trace(x) {if (z_verbose>=0) fprintf x ;} +# define Tracev(x) {if (z_verbose>0) fprintf x ;} +# define Tracevv(x) {if (z_verbose>1) fprintf x ;} +# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;} +# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;} #else -# define Assert(cond,msg) -# define Trace(x) -# define Tracev(x) -# define Tracevv(x) -# define Tracec(c,x) -# define Tracecv(c,x) +# define Assert(cond,msg) +# define Trace(x) +# define Tracev(x) +# define Tracevv(x) +# define Tracec(c,x) +# define Tracecv(c,x) #endif #ifndef Z_SOLO - voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items, - unsigned size)); - void ZLIB_INTERNAL zcfree OF((voidpf opaque, voidpf ptr)); + voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items, + unsigned size)); + void ZLIB_INTERNAL zcfree OF((voidpf opaque, voidpf ptr)); #endif #define ZALLOC(strm, items, size) \ - (*((strm)->zalloc))((strm)->opaque, (items), (size)) -#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr)) + (*((strm)->zalloc))((strm)->opaque, (items), (size)) +#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr)) #define TRY_FREE(s, p) {if (p) ZFREE(s, p);} /* Reverse the bytes in a 32-bit value */ #define ZSWAP32(q) ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \ - (((q) & 0xff00) << 8) + (((q) & 0xff) << 24)) + (((q) & 0xff00) << 8) + (((q) & 0xff) << 24)) #endif /* ZUTIL_H */