From owner-svn-soc-all@FreeBSD.ORG Tue Aug 20 08:23:30 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]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 9F429DEB for ; Tue, 20 Aug 2013 08:23:30 +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 7E64B2C09 for ; Tue, 20 Aug 2013 08:23:30 +0000 (UTC) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7K8NUw2021073 for ; Tue, 20 Aug 2013 08:23:30 GMT (envelope-from dpl@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.7/8.14.6/Submit) id r7K8NUFU021064 for svn-soc-all@FreeBSD.org; Tue, 20 Aug 2013 08:23:30 GMT (envelope-from dpl@FreeBSD.org) Date: Tue, 20 Aug 2013 08:23:30 GMT Message-Id: <201308200823.r7K8NUFU021064@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: r256191 - soc2013/dpl/head/lib/libzcap/zlibworker 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, 20 Aug 2013 08:23:30 -0000 Author: dpl Date: Tue Aug 20 08:23:30 2013 New Revision: 256191 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=256191 Log: Improved commands, use global buffer. Improved error messages. Modified: soc2013/dpl/head/lib/libzcap/zlibworker/commands.c soc2013/dpl/head/lib/libzcap/zlibworker/zlibworker.c Modified: soc2013/dpl/head/lib/libzcap/zlibworker/commands.c ============================================================================== --- soc2013/dpl/head/lib/libzcap/zlibworker/commands.c Tue Aug 20 08:22:24 2013 (r256190) +++ soc2013/dpl/head/lib/libzcap/zlibworker/commands.c Tue Aug 20 08:23:30 2013 (r256191) @@ -6,6 +6,9 @@ #include nvlist_t * args; +extern int zero; +extern void *data; + size_t gzsize = sizeof(struct gzFile_s); size_t zstreamsize = sizeof(z_stream); @@ -80,15 +83,7 @@ void zcapcmd_deflateSetDictionary(nvlist_t *nvl, nvlist_t *result) { - uLong ret = -1; - - if ((args = nvlist_take_nvlist(nvl, "args")) == NULL) { - nvlist_take_binary(args, "strm", &zstreamsize); - ret = compressBound( - nvlist_take_number(args, "sourceLen") - ); - } - nvlist_add_number(result, "result", ret ); + ; } void @@ -255,11 +250,9 @@ { int ret = -1; int len = 0; - void * data = NULL; if ((args = nvlist_take_nvlist(nvl, "args")) != NULL) { len = nvlist_take_number(args, "len"); - data = malloc(len); ret = gzread( nvlist_take_binary(args, "file", &gzsize), data, @@ -269,6 +262,7 @@ nvlist_add_number(result, "result", ret); nvlist_add_binary(result, "data", data, len); + zero = 1; } void @@ -276,18 +270,18 @@ { int ret = -1; size_t len = 0; - void * data; if ((args = nvlist_take_nvlist(nvl, "args")) != NULL) { len = nvlist_take_number(args, "len"); data = malloc(len); memcpy(data, nvlist_take_binary(args, "data", &len), len); - ret = gzread( + ret = gzwrite( nvlist_take_binary(args, "file", &gzsize), data, len); } nvlist_add_number(result, "result", ret); + zero = 1; } void @@ -295,11 +289,9 @@ { int ret = -1; int len = 0; - void * data; if ((args = nvlist_take_nvlist(nvl, "args")) != NULL) { len = nvlist_take_number(args, "len"); - data = malloc(len); ret = gzprintf( nvlist_take_binary(args, "file", &gzsize), nvlist_take_string(args, "str") @@ -459,19 +451,16 @@ zcapcmd_adler32(nvlist_t *nvl, nvlist_t *result) { uLong ret = -1; - fprintf(stderr, "\nzcapcmd_adler32()\n"); if ((args = nvlist_take_nvlist(nvl, "args")) != NULL) { size_t len = nvlist_take_number(args, "len"); uLong adler = nvlist_take_number(args, "adler"); void *buf = nvlist_take_binary(args, "buf", &len); - fprintf(stderr, "zcapcmd_crc32: adler: %ld\n", adler); - fprintf(stderr, "zcapcmd_crc32: buf: %p\n", &buf); - fprintf(stderr, "zcapcmd_crc32: len: %d\n", len); - fflush(stderr); - ret = adler32(adler, buf, len); + memcpy(data, buf, len); + ret = adler32(adler, data, len); } nvlist_add_number(result, "result", ret ); + zero = 1; } Modified: soc2013/dpl/head/lib/libzcap/zlibworker/zlibworker.c ============================================================================== --- soc2013/dpl/head/lib/libzcap/zlibworker/zlibworker.c Tue Aug 20 08:22:24 2013 (r256190) +++ soc2013/dpl/head/lib/libzcap/zlibworker/zlibworker.c Tue Aug 20 08:23:30 2013 (r256191) @@ -4,6 +4,7 @@ #include #include +#include #include #include "../commands.h" @@ -65,7 +66,10 @@ extern void zcapcmd_crc32(nvlist_t *nvl, nvlist_t *result); extern void zcapcmd_crc32_combine(nvlist_t *nvl, nvlist_t *result); +/* Points to a 5kb buffer */ void * data; +/* Zero == 1 when we need to zero out data */ +int zero = 0; int main() @@ -75,22 +79,30 @@ /* Sandbox the process */ cap_enter(); - if ((data = malloc(5*1024)) == NULL) { + if ((data = calloc(5*1024, 1)) == NULL) { perror("malloc"); abort(); } - if ((result = nvlist_create(0)) == NULL) - return(-1); while(1) { + if ((result = nvlist_create(0)) == NULL) { + fprintf(stderr, "zlibworker: Can't create result.\n"); + exit(1); + } + if ((nvl = nvlist_recv(3)) != NULL) { - if (!nvlist_exists(nvl, "command")) - continue; - if (!nvlist_exists(nvl, "args")) - continue; + if (!nvlist_exists(nvl, "command")) { + fprintf(stderr, "zlibworker: No command.\n"); + exit(1); + } + if (!nvlist_exists(nvl, "args")) { + fprintf(stderr, "zlibworker: args doesn't exist\n"); + exit(1); + } } else { - continue; + fprintf(stderr, "zlibworker: nvl is NULL\n"); + exit(1); } // Switch for "command" @@ -247,7 +259,7 @@ zcapcmd_adler32(nvl, result); break; case (ZCAPCMD_ADLER32_COMBINE): - zcapcmd_compressBound(nvl, result); + zcapcmd_adler32_combine(nvl, result); break; case (ZCAPCMD_CRC32): zcapcmd_crc32(nvl, result); @@ -256,11 +268,19 @@ zcapcmd_crc32_combine(nvl, result); break; default: + perror("zlibworker: unknown command"); + exit(1); break; } - if( nvlist_send(3, result) != 0 ) + if( nvlist_send(3, result) != 0 ) { perror("zlibworker: Couldn't send response\n"); + exit(1); + } + + if (zero) + memset(data, 0, 5*1024); } + return (0); } \ No newline at end of file