Date: Tue, 3 Sep 2013 18:41:30 GMT From: dpl@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r256878 - in soc2013/dpl/head/lib/libzcap: . test zlibworker Message-ID: <201309031841.r83IfUlb081729@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dpl Date: Tue Sep 3 18:41:30 2013 New Revision: 256878 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=256878 Log: Savepoint before an architectural change. Last commit working with a single child process. Added: soc2013/dpl/head/lib/libzcap/test/testlib.sh (contents, props changed) soc2013/dpl/head/lib/libzcap/zlibworker/data.h Modified: soc2013/dpl/head/lib/libzcap/capsicum.c soc2013/dpl/head/lib/libzcap/capsicum.h soc2013/dpl/head/lib/libzcap/commands.c soc2013/dpl/head/lib/libzcap/commands.h soc2013/dpl/head/lib/libzcap/deflate.c soc2013/dpl/head/lib/libzcap/gzlib.c soc2013/dpl/head/lib/libzcap/inflate.c soc2013/dpl/head/lib/libzcap/test/zcaplibtest.c soc2013/dpl/head/lib/libzcap/zlibworker/commands.c soc2013/dpl/head/lib/libzcap/zlibworker/zlibworker.c Modified: soc2013/dpl/head/lib/libzcap/capsicum.c ============================================================================== --- soc2013/dpl/head/lib/libzcap/capsicum.c Tue Sep 3 17:33:29 2013 (r256877) +++ soc2013/dpl/head/lib/libzcap/capsicum.c Tue Sep 3 18:41:30 2013 (r256878) @@ -12,8 +12,6 @@ #include <stdio.h> #include <err.h> -#define SUM 0 - pid_t pid = 0; int sv[2]; @@ -29,22 +27,20 @@ perror("zcaplib: socketpair()"); if( (pid = fork()) == 0 ){ - cap_rights_limit(STDIN_FILENO, CAP_READ); - cap_rights_limit(STDOUT_FILENO, CAP_WRITE|CAP_FSTAT|CAP_IOCTL); - cap_rights_limit(STDERR_FILENO, CAP_WRITE); + if (cap_rights_limit(STDIN_FILENO, CAP_READ) < 0) + err(1, "Couldn't limit rights"); + if (cap_rights_limit(STDOUT_FILENO, CAP_WRITE|CAP_FSTAT) < 0) + err(1, "Couldn't limit rights"); + if (cap_rights_limit(STDERR_FILENO, CAP_WRITE) < 0) + err(1, "Couldn't limit rights"); dup2(sv[0], 3); - cap_rights_limit(3, CAP_WRITE|CAP_READ|CAP_POLL_EVENT); + if (cap_rights_limit(3, CAP_WRITE|CAP_READ|CAP_POLL_EVENT) < 0) + err(1, "Couldn't limit rights"); closefrom(4); - /* open and execl() listener */ - if (access("/usr/libexec/zlibworker", X_OK) < 0) { - perror("zcaplib: access():"); - exit (-1); - } - + /* execl() zlibworker */ if ( execl("/usr/libexec/zlibworker", "zlibworker", NULL) < 0) { - perror("zcaplib: execl:"); - exit (-1); + err(1, "Couldn't find zlibworker."); } exit(0); } else { Modified: soc2013/dpl/head/lib/libzcap/capsicum.h ============================================================================== --- soc2013/dpl/head/lib/libzcap/capsicum.h Tue Sep 3 17:33:29 2013 (r256877) +++ soc2013/dpl/head/lib/libzcap/capsicum.h Tue Sep 3 18:41:30 2013 (r256878) @@ -2,16 +2,20 @@ * With Capsicum, we get a compartmentalized, and securer lib. */ #define CAPSICUM -#include <unistd.h> -#include <stdlib.h> -#include <signal.h> #include <sys/capability.h> #include <sys/types.h> #include <sys/wait.h> #include <sys/socket.h> + +#include <dnv.h> +#include <stdlib.h> +#include <signal.h> #include <nv.h> +#include <unistd.h> + #include "commands.h" + #define MAXLEN (5*1024) extern int pid; Modified: soc2013/dpl/head/lib/libzcap/commands.c ============================================================================== --- soc2013/dpl/head/lib/libzcap/commands.c Tue Sep 3 17:33:29 2013 (r256877) +++ soc2013/dpl/head/lib/libzcap/commands.c Tue Sep 3 18:41:30 2013 (r256878) @@ -10,9 +10,8 @@ #include <err.h> -void checkChild(void); -void initializeCommand(void); -void destroy(void); +static void initializeCommand(void); +static void destroy(void); /* Basic functions */ @@ -61,7 +60,7 @@ uLong zcapcmd_compressBound(uLong sourceLen); /* gzip file functions */ -gzFile zcapcmd_gzopen(const char *path, int fd, const char *mode); +gzFile zcapcmd_gzopen(int fd, const char *mode); int zcapcmd_gzbuffer(gzFile file, unsigned size); int zcapcmd_gzsetparams(gzFile file, int level, int strategy); int zcapcmd_gzread(gzFile file, voidp buf, unsigned len); @@ -74,7 +73,7 @@ int zcapcmd_gzflush(gzFile file, int flush); z_off_t zcapcmd_gzseek(gzFile file, z_off_t offset, int whence); int zcapcmd_simplecommand(gzFile file, int command); -char * zcapcmd_gzerror(gzFile file, int *errnum); +const char * zcapcmd_gzerror(gzFile file, int *errnum); /* Checksum functions */ uLong zcapcmd_adler32(uLong adler, const Bytef *buf, uInt len); @@ -88,26 +87,21 @@ extern void *data; nvlist_t *nvl, *args, *result; -size_t gzfilesize = sizeof(struct gzFile_s); +size_t gzfilesize = sizeof(gzFile); size_t gzheadersize = sizeof(struct gz_header_s); size_t zstreamsize = sizeof(z_stream); -void -checkChild(void) { +static void +initializeCommand() { if (pid == 0) startChild(); -} - -void -initializeCommand() { - checkChild(); if( (args = nvlist_create(0)) == NULL || (nvl = nvlist_create(0)) == NULL ) err(1, "zcaplib: nvlist_create"); } -void +static void destroy(void) { nvlist_destroy(args); nvlist_destroy(nvl); @@ -119,6 +113,7 @@ int memLevel, int strategy, const char * version, int stream_size) { uLong ret; + const z_stream *newstrm; initializeCommand(); @@ -135,18 +130,19 @@ nvlist_add_nvlist(nvl, "args", args); result = sendCommand(nvl); - - ret = nvlist_take_number(result, "result"); - /* We take the "good" struct from the worker. - Here we have the good internal_state. - When we work on the data now, we have to pass it in - buffers, and sync: next_in, avail_in, total_in, next_out, - avail_out, total_out. */ - /* Supposing there's already space reserved for z_stream */ - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); - memcpy(strm, newstrm, zstreamsize); - char *msg = nvlist_take_string(result, "msg"); - memcpy(strm->msg, msg, strlen(msg)+1); + ret = dnvlist_get_number(result, "result", NULL); + /* + * We get the "good" struct from the worker. + * Here we have the good internal_state. + * When we work on the data now, we have to pass + * it in buffers, and sync next_in, avail_in, total_in, + * next_out, avail_out and total_out. + */ + newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); + memcpy(strm, newstrm, zstreamsize); + const char *msg = dnvlist_get_string(result, "msg", NULL); + if (msg != NULL) + memcpy(strm->msg, msg, strlen(msg)+1); destroy(); return(ret); } @@ -155,7 +151,8 @@ zcapcmd_deflate(z_streamp strm, int flush) { uLong ret; - + const z_stream *newstrm; + initializeCommand(); nvlist_add_number(nvl, "command", ZCAPCMD_DEFLATEINIT); @@ -164,8 +161,8 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); /* Supposing there's already space reserved for z_stream */ memcpy(strm, newstrm, zstreamsize); destroy(); @@ -177,7 +174,8 @@ zcapcmd_deflateEnd(z_streamp strm) { uLong ret; - + const z_stream *newstrm; + initializeCommand(); nvlist_add_number(nvl, "command", ZCAPCMD_DEFLATEEND); nvlist_add_binary(args, "strm", (void *)strm, zstreamsize); @@ -185,9 +183,12 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); - memcpy(strm, newstrm, zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); + if (newstrm != NULL) + memcpy(strm, newstrm, zstreamsize); + else + err(1, "libzcap: deflateEnd() destroyed z_stream\n"); destroy(); return(ret); } @@ -197,11 +198,12 @@ const char *version, int stream_size) { uLong ret; - + const z_stream *newstrm; + const char *msg; + initializeCommand(); nvlist_add_number(nvl, "command", ZCAPCMD_INFLATEINIT); - /* No worries here */ nvlist_add_binary(args, "strm", (void *)strm, zstreamsize); nvlist_add_number(args, "windowBits", windowBits); nvlist_add_string(args, "version", version); @@ -210,11 +212,13 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); - memcpy(strm, newstrm, zstreamsize); - char *msg = nvlist_take_string(result, "msg"); - memcpy(strm->msg, msg, strlen(msg)+1); + ret = dnvlist_get_number(result, "result", NULL); + newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); + if (newstrm != NULL) + memcpy(strm, newstrm, zstreamsize); + msg = dnvlist_get_string(result, "msg", NULL); + if (msg != NULL) + memcpy(strm->msg, msg, strlen(msg)+1); destroy(); return(ret); } @@ -226,14 +230,14 @@ initializeCommand(); - nvlist_add_number(nvl, "command", ZCAPCMD_DEFLATEINIT); + nvlist_add_number(nvl, "command", ZCAPCMD_INFLATE); nvlist_add_binary(args, "strm", (void *)strm, zstreamsize); nvlist_add_nvlist(nvl, "args", args); result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); /* Supposing there's already space reserved for z_stream */ memcpy(strm, newstrm, zstreamsize); destroy(); @@ -244,18 +248,20 @@ zcapcmd_inflateEnd(z_streamp strm) { uLong ret; - + const z_stream *newstrm; + initializeCommand(); - nvlist_add_number(nvl, "command", ZCAPCMD_DEFLATEINIT); + nvlist_add_number(nvl, "command", ZCAPCMD_INFLATEEND); nvlist_add_binary(args, "strm", (void *)strm, zstreamsize); nvlist_add_nvlist(nvl, "args", args); result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); - memcpy(strm, newstrm, zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); + if (newstrm != NULL) + memcpy(strm, newstrm, zstreamsize); destroy(); return(ret); } @@ -277,8 +283,8 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); memcpy(strm, newstrm, zstreamsize); destroy(); return(ret); @@ -299,8 +305,8 @@ /* The two z_streamp are now copied at the worker. */ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); memcpy(dest, newstrm, zstreamsize); destroy(); return(ret); @@ -319,11 +325,11 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); + ret = dnvlist_get_number(result, "result", NULL); /* Save the reseted strm. */ - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); memcpy(strm, newstrm, zstreamsize); - char *msg = nvlist_take_string(result, "msg"); + const char *msg = dnvlist_get_string(result, "msg", NULL); memcpy(strm->msg, msg, strlen(msg)+1); destroy(); return(ret); @@ -344,9 +350,9 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); + ret = dnvlist_get_number(result, "result", NULL); /* Overwrite the old streamp */ - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); memcpy(strm, newstrm, zstreamsize); destroy(); return(ret); @@ -370,8 +376,8 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); memcpy(strm, newstrm, zstreamsize); destroy(); return(ret); @@ -391,8 +397,8 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); memcpy(strm, newstrm, zstreamsize); destroy(); return(ret); @@ -414,8 +420,8 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); memcpy(strm, newstrm, zstreamsize); destroy(); return(ret); @@ -436,8 +442,8 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); memcpy(strm, newstrm, zstreamsize); destroy(); return(ret); @@ -461,8 +467,8 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); memcpy(strm, newstrm, zstreamsize); destroy(); return(ret); @@ -482,8 +488,8 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); memcpy(strm, newstrm, zstreamsize); destroy(); return(ret); @@ -503,8 +509,8 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); memcpy(strm, newstrm, zstreamsize); destroy(); return(ret); @@ -523,8 +529,8 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); memcpy(strm, newstrm, zstreamsize); destroy(); return(ret); @@ -545,8 +551,8 @@ /* The two z_streamp are now copied at the worker. */ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); memcpy(dest, newstrm, zstreamsize); destroy(); return(ret); @@ -565,10 +571,10 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); memcpy(strm, newstrm, zstreamsize); - char *msg = nvlist_take_string(result, "msg"); + const char *msg = dnvlist_get_string(result, "msg", NULL); memcpy(strm->msg, msg, strlen(msg)+1); destroy(); return(ret); @@ -588,10 +594,10 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); memcpy(strm, newstrm, zstreamsize); - char *msg = nvlist_take_string(result, "msg"); + const char *msg = dnvlist_get_string(result, "msg", NULL); memcpy(strm->msg, msg, strlen(msg)+1); destroy(); return(ret); @@ -612,8 +618,8 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); memcpy(strm, newstrm, zstreamsize); destroy(); return(ret); @@ -632,8 +638,8 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); memcpy(strm, newstrm, zstreamsize); destroy(); return(ret); @@ -654,10 +660,10 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); memcpy(strm, newstrm, zstreamsize); - gz_headerp newhead = nvlist_take_binary(result, "newhead", gzheadersize); + gz_headerp newhead = (gz_headerp)dnvlist_get_binary(result, "newhead", gzheadersize, NULL, sizeof(NULL)); head->done = newhead->done; destroy(); return(ret); @@ -673,17 +679,16 @@ initializeCommand(); nvlist_add_number(nvl, "command", ZCAPCMD_INFLATEBACKINIT); - /* No worries here */ nvlist_add_binary(args, "strm", (void *)strm, zstreamsize); nvlist_add_number(args, "windowBits", windowBits); nvlist_add_nvlist(nvl, "args", args); result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); memcpy(strm, newstrm, zstreamsize); - char *msg = nvlist_take_string(result, "msg"); + const char *msg = dnvlist_get_string(result, "msg", NULL); memcpy(strm->msg, msg, strlen(msg)+1); destroy(); return(ret); @@ -703,8 +708,8 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); memcpy(strm, newstrm, zstreamsize); destroy(); return(ret); @@ -723,8 +728,8 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); - z_stream *newstrm = nvlist_take_binary(result, "newstrm", &zstreamsize); + ret = dnvlist_get_number(result, "result", NULL); + const z_stream *newstrm = dnvlist_get_binary(result, "newstrm", &zstreamsize, NULL, sizeof(NULL)); memcpy(strm, newstrm, zstreamsize); destroy(); return(ret); @@ -742,7 +747,7 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); + ret = dnvlist_get_number(result, "result", NULL); destroy(); return(ret); } @@ -760,32 +765,32 @@ nvlist_add_nvlist(nvl, "args", args); result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); + ret = dnvlist_get_number(result, "result", NULL); destroy(); return(ret); } /* gzip file functions */ gzFile -zcapcmd_gzopen(const char *path, int fd, const char *mode) +zcapcmd_gzopen(int fd, const char *mode) { - + gzFile *fileptr; + gzFile file; initializeCommand(); nvlist_add_number(nvl, "command", ZCAPCMD_GZOPEN); - nvlist_add_string(args, "path", path); nvlist_move_descriptor(args, "fd", fd); nvlist_add_string(args, "mode", mode); nvlist_add_nvlist(nvl, "args", args); - + result = sendCommand(nvl); - void *mem = malloc(gzfilesize); - memcpy(mem, - nvlist_take_binary(result, "result", &gzfilesize), - gzfilesize); + fileptr = (gzFile *)dnvlist_get_binary(result, "result", &gzfilesize, NULL, sizeof(NULL)); + file = *fileptr; destroy(); - return((gzFile)mem); + fprintf(stderr, "zcaplib: after zcapcmd_gzopen: fileptr: %p *fileprt: %p\n", fileptr, *fileptr); + fprintf(stderr, "zcaplib: after zcapcmd_gzopen: file: %p\n", file); + return((gzFile)file); } int @@ -801,7 +806,7 @@ result = sendCommand(nvl); - int ret = nvlist_take_number(result, "result"); + int ret = dnvlist_get_number(result, "result", NULL); destroy(); return(ret); } @@ -820,7 +825,7 @@ result = sendCommand(nvl); - int ret = nvlist_take_number(result, "result"); + int ret = dnvlist_get_number(result, "result", NULL); destroy(); return(ret); } @@ -828,7 +833,7 @@ int zcapcmd_gzread(gzFile file, voidp buf, unsigned len) { - void * data; + const void * data; initializeCommand(); @@ -839,8 +844,8 @@ result = sendCommand(nvl); - int ret = nvlist_take_number(result, "result"); - data = nvlist_take_binary(result, "data", len); + int ret = dnvlist_get_number(result, "result", NULL); + data = dnvlist_get_binary(result, "data", len, NULL, sizeof(NULL)); memcpy(buf, data, (size_t)len); destroy(); return(ret); @@ -859,7 +864,7 @@ result = sendCommand(nvl); - int ret = nvlist_take_number(result, "result"); + int ret = dnvlist_get_number(result, "result", NULL); destroy(); return(ret); } @@ -876,7 +881,7 @@ result = sendCommand(nvl); - int ret = nvlist_take_number(result, "result"); + int ret = dnvlist_get_number(result, "result", NULL); destroy(); return(ret); } @@ -894,7 +899,7 @@ result = sendCommand(nvl); - int ret = nvlist_take_number(result, "result"); + int ret = dnvlist_get_number(result, "result", NULL); destroy(); return(ret); } @@ -912,7 +917,7 @@ result = sendCommand(nvl); - char *ret = nvlist_take_string(result, "result"); + const char *ret = dnvlist_get_string(result, "result", NULL); if (ret == NULL) return NULL; else @@ -934,7 +939,7 @@ result = sendCommand(nvl); - int ret = nvlist_take_number(result, "result"); + int ret = dnvlist_get_number(result, "result", NULL); destroy(); return(ret); } @@ -952,7 +957,7 @@ result = sendCommand(nvl); - int ret = nvlist_take_number(result, "result"); + int ret = dnvlist_get_number(result, "result", NULL); destroy(); return(ret); } @@ -970,7 +975,7 @@ result = sendCommand(nvl); - int ret = nvlist_take_number(result, "result"); + int ret = dnvlist_get_number(result, "result", NULL); destroy(); return(ret); } @@ -989,7 +994,7 @@ result = sendCommand(nvl); - int ret = nvlist_take_number(result, "result"); + int ret = dnvlist_get_number(result, "result", NULL); destroy(); return ((z_off_t)ret); } @@ -1011,12 +1016,12 @@ result = sendCommand(nvl); - int ret = nvlist_take_number(result, "result"); + int ret = dnvlist_get_number(result, "result", NULL); destroy(); return(ret); } -char * +const char * zcapcmd_gzerror(gzFile file, int *errnum) { @@ -1029,8 +1034,8 @@ result = sendCommand(nvl); /* XXX: Should I malloc space for this? */ - char * ret = nvlist_take_string(result, "result"); - *errnum = nvlist_take_number(result, "zerrno"); + const char * ret = dnvlist_get_string(result, "result", NULL); + *errnum = dnvlist_get_number(result, "zerrno", NULL); destroy(); return(ret); } @@ -1051,7 +1056,7 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); + ret = dnvlist_get_number(result, "result", NULL); destroy(); return(ret); } @@ -1071,7 +1076,7 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); + ret = dnvlist_get_number(result, "result", NULL); destroy(); return(ret); } @@ -1081,12 +1086,8 @@ { uLong ret; - checkChild(); - if( (args = nvlist_create(0)) == NULL || - (nvl = nvlist_create(0)) == NULL ) { - perror("zcaplib: nvlist_create"); - return(0); - } + initializeCommand(); + nvlist_add_number(nvl, "command", ZCAPCMD_CRC32); nvlist_add_number(args, "crc", crc); nvlist_add_binary(args, "buf", buf, len); @@ -1095,7 +1096,7 @@ result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); + ret = dnvlist_get_number(result, "result", NULL); destroy(); return(ret); } @@ -1114,7 +1115,7 @@ nvlist_add_nvlist(nvl, "args", args); result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); + ret = dnvlist_get_number(result, "result", NULL); destroy(); return(ret); } \ No newline at end of file Modified: soc2013/dpl/head/lib/libzcap/commands.h ============================================================================== --- soc2013/dpl/head/lib/libzcap/commands.h Tue Sep 3 17:33:29 2013 (r256877) +++ soc2013/dpl/head/lib/libzcap/commands.h Tue Sep 3 18:41:30 2013 (r256878) @@ -13,6 +13,7 @@ */ +#define SOCKETFILENO 3 #define ZCAPCMD_DEFLATEINIT 0 #define ZCAPCMD_DEFLATE 1 Modified: soc2013/dpl/head/lib/libzcap/deflate.c ============================================================================== --- soc2013/dpl/head/lib/libzcap/deflate.c Tue Sep 3 17:33:29 2013 (r256877) +++ soc2013/dpl/head/lib/libzcap/deflate.c Tue Sep 3 18:41:30 2013 (r256878) @@ -174,9 +174,6 @@ int ZEXPORT deflateEnd (strm) z_streamp strm; { - strm->zalloc = Z_NULL; - strm->zfree = Z_NULL; - strm->opaque = Z_NULL; return zcapcmd_deflateEnd(strm); } Modified: soc2013/dpl/head/lib/libzcap/gzlib.c ============================================================================== --- soc2013/dpl/head/lib/libzcap/gzlib.c Tue Sep 3 17:33:29 2013 (r256877) +++ soc2013/dpl/head/lib/libzcap/gzlib.c Tue Sep 3 18:41:30 2013 (r256878) @@ -27,52 +27,55 @@ { int oflag = 0; int fd; + char *loopmode; - while(*mode) { + strncpy(loopmode, mode, strlen(mode)+1); + while(*loopmode) { switch (*mode){ #ifndef NO_GZCOMPRESS - case('w'): - oflag |= O_WRONLY|O_CREAT|O_TRUNC; - break; - case('a'): - oflag |= O_WRONLY|O_CREAT|O_APPEND; - break; -#endif - case('r'): - oflag |= O_RDONLY; - break; + case('w'): + oflag |= O_WRONLY|O_CREAT|O_TRUNC; + break; + case('a'): + oflag |= O_WRONLY|O_CREAT|O_APPEND; + break; +#endif + case('r'): + oflag |= O_RDONLY; + break; #ifdef O_CLOEXEC - case('e'): - oflag |= O_CLOEXEC; - break; + case('e'): + oflag |= O_CLOEXEC; + break; #endif #ifdef O_EXCL - case('x'): - oflag |= O_EXCL; - break; -#endif - case('+'): - /* Not accepted by gzopen */ - oflag |= O_RDONLY; - break; - default: - ; + case('x'): + oflag |= O_EXCL; + break; +#endif + case('+'): + /* Not accepted by gzopen */ + oflag |= O_RDONLY; + break; + default: + ; } - ++mode; + ++loopmode; } -#ifdef O_LARGEFILE - oflag |= O_LARGEFILE; -#endif -#ifdef O_BINARY - oflag |= O_BINARY; -#endif if ((fd = open(path, oflag)) < 0) { - perror("zcaplib: Couldn't open"); + perror("zcaplib: Couldn't create gzip file"); + abort(); + } + + if (cap_rights_limit(fd, CAP_READ|CAP_SEEK|CAP_WRITE|CAP_FSTAT|CAP_FCNTL) < 0) { + perror("zcaplib: Couldn't limit fd"); + abort(); + } + if (cap_fcntls_limit(fd, CAP_FCNTL_GETFL) < 0) { + perror("zcaplib: Couldn't limit fd"); abort(); } - - cap_rights_limit(fd, CAP_READ|CAP_SEEK|CAP_WRITE|CAP_FSTAT); return gzdopen(fd, mode); } @@ -94,16 +97,6 @@ } /* -- see zlib.h -- */ -#ifdef _WIN32 -gzFile ZEXPORT gzopen_w(path, mode) - const wchar_t *path; - const char *mode; -{ - return gz_open(path, -2, mode); -} -#endif - -/* -- see zlib.h -- */ extern gzFile zcapcmd_gzbuffer(); int ZEXPORT gzbuffer(file, size) gzFile file; Modified: soc2013/dpl/head/lib/libzcap/inflate.c ============================================================================== --- soc2013/dpl/head/lib/libzcap/inflate.c Tue Sep 3 17:33:29 2013 (r256877) +++ soc2013/dpl/head/lib/libzcap/inflate.c Tue Sep 3 18:41:30 2013 (r256878) @@ -37,9 +37,6 @@ int ZEXPORT inflateEnd(strm) z_streamp strm; { - strm->zalloc = Z_NULL; - strm->zfree = Z_NULL; - strm->opaque = Z_NULL; return zcapcmd_inflateEnd(strm); } Added: soc2013/dpl/head/lib/libzcap/test/testlib.sh ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2013/dpl/head/lib/libzcap/test/testlib.sh Tue Sep 3 18:41:30 2013 (r256878) @@ -0,0 +1,16 @@ +#!/bin/sh + +cd /usr/home/athos/gsoc/head/lib/libzcap/ +sudo make clean all install +cd /usr/home/athos/gsoc/head/lib/libzcap/test +cc -o zcaplibtest -g -Wall -fno-color-diagnostics -lnv -lzcap zcaplibtest.c +echo; echo +echo 'Done compiling library and tester.' +echo + +if [ $1 = "-k" ] +then + ktrace -i ./zcaplibtest +else + ./zcaplibtest +fi Modified: soc2013/dpl/head/lib/libzcap/test/zcaplibtest.c ============================================================================== --- soc2013/dpl/head/lib/libzcap/test/zcaplibtest.c Tue Sep 3 17:33:29 2013 (r256877) +++ soc2013/dpl/head/lib/libzcap/test/zcaplibtest.c Tue Sep 3 18:41:30 2013 (r256878) @@ -1,61 +1,64 @@ -#include <zlib.h> - #include <stdio.h> #include <stdlib.h> #include <string.h> #include <err.h> +#include <zlib.h> /* Basic functions */ -void testzlibVersion(void); -void testdeflateInit(z_streamp strm); -void testdeflate(z_streamp strm); -void testdeflateEnd(z_streamp strm); -void testinflateInit(z_streamp strm); -void testinflate(z_streamp strm); -void testinflateEnd(z_streamp strm); +static void testzlibVersion(void); +static void testdeflateInit(z_streamp strm); +static void testdeflate(z_streamp strm); +static void testdeflateEnd(z_streamp strm); +static void testinflateInit(z_streamp strm); +static void testinflate(z_streamp strm); +static void testinflateEnd(z_streamp strm); /* gzip functions */ /* Test non-IO and saves a compressed file */ -gzFile testgzbasic(void); +static gzFile testgzbasic(void); /* returns a gzFile of the written file */ -gzFile testgzio(gzFile file); +static gzFile testgzio(gzFile file); /* Test error related functions */ -void testgzerr(gzFile file); +static void testgzerr(gzFile file); /* Advanced functions */ -void testzlibCompileFlags(void); +static void testzlibCompileFlags(void); /* Utility functions */ -void testCompressBound(void); +static void testCompressBound(void); *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201309031841.r83IfUlb081729>