socsvn commit: r256193 - in soc2013/dpl/head/lib/libzcap: . zlibworker
dpl at FreeBSD.org
dpl at FreeBSD.org
Tue Aug 20 12:23:34 UTC 2013
Author: dpl
Date: Tue Aug 20 12:23:34 2013
New Revision: 256193
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=256193
Log:
Made slight advances.
Modified:
soc2013/dpl/head/lib/libzcap/capsicum.c
soc2013/dpl/head/lib/libzcap/commands.h
soc2013/dpl/head/lib/libzcap/zlibworker/zlibworker.c
Modified: soc2013/dpl/head/lib/libzcap/capsicum.c
==============================================================================
--- soc2013/dpl/head/lib/libzcap/capsicum.c Tue Aug 20 11:06:56 2013 (r256192)
+++ soc2013/dpl/head/lib/libzcap/capsicum.c Tue Aug 20 12:23:34 2013 (r256193)
@@ -9,6 +9,7 @@
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
+#include <err.h>
#define SUM 0
@@ -23,30 +24,27 @@
startChild(void)
{
if (socketpair(PF_LOCAL, SOCK_STREAM, 0, sv) < 0 )
- perror("zcaplib: socketpair");
+ perror("zcaplib: socketpair()");
if( (pid = fork()) == 0 ){
cap_rights_limit(STDIN_FILENO, CAP_WRITE);
cap_rights_limit(STDOUT_FILENO, CAP_READ);
cap_rights_limit(STDERR_FILENO, CAP_WRITE);
+ //cap_rights_limit(3, CAP_WRITE|CAP_READ|CAP_EVENT);
+ closefrom(4);
- close(sv[0]);
- dup2(sv[1] , 3); /* 3 is now the socket */
- close(4);
-
/* open and execl() listener */
if (access("/usr/libexec/zlibworker", X_OK) < 0) {
- perror("zcaplib: zlibworker:");
+ perror("zcaplib: access():");
exit (-1);
}
if ( execl("/usr/libexec/zlibworker", "zlibworker", NULL) <0 ) {
- perror("zcaplib: zlibworker:");
+ perror("zcaplib: execl:");
exit (-1);
}
exit(0);
} else {
- close(sv[1]);
atexit(killChild);
}
@@ -56,16 +54,11 @@
nvlist_t *
sendCommand( nvlist_t *nvl )
{
- if( nvlist_send(sv[0], nvl) != 0 ) {
- perror("zcaplib: nvlist_send()");
- return NULL;
- }
+ if( nvlist_send(sv[1], nvl) != 0 )
+ err(1, "zcaplib: nvlist_send()");
- /* recv results */
- if ((nvl = nvlist_recv(sv[0])) == NULL) {
- perror("zcaplib: nvlist_recv()");
- return NULL;
- }
+ if ((nvl = nvlist_recv(sv[1])) == NULL)
+ err(1, "nvlist_recv(): nvl is NULL");
return (nvl);
}
Modified: soc2013/dpl/head/lib/libzcap/commands.h
==============================================================================
--- soc2013/dpl/head/lib/libzcap/commands.h Tue Aug 20 11:06:56 2013 (r256192)
+++ soc2013/dpl/head/lib/libzcap/commands.h Tue Aug 20 12:23:34 2013 (r256193)
@@ -47,35 +47,35 @@
#define ZCAPCMD_ZLIBCOMPILEFLAGS 28
/* utility functions */
-#define ZCAPCMD_COMPRESSBOUND 30
+#define ZCAPCMD_COMPRESSBOUND 29
/* gzip file access functions */
-#define ZCAPCMD_GZOPEN 32
-#define ZCAPCMD_GZBUFFER 34
-#define ZCAPCMD_GZSETPARAMS 35
-#define ZCAPCMD_GZREAD 36
-#define ZCAPCMD_GZWRITE 37
-#define ZCAPCMD_GZPRINTF 38
-#define ZCAPCMD_GZPUTS 39
-#define ZCAPCMD_GZGETS 49
-#define ZCAPCMD_GZPUTC 50
-#define ZCAPCMD_GZGETC 51
-#define ZCAPCMD_GZUNGETC 52
-#define ZCAPCMD_GZFLUSH 53
-#define ZCAPCMD_GZSEEK 54
-#define ZCAPCMD_GZREWIND 55
-#define ZCAPCMD_GZTELL 56
-#define ZCAPCMD_GZOFFSET 57
-#define ZCAPCMD_GZEOF 58
-#define ZCAPCMD_GZDIRECT 59
-#define ZCAPCMD_GZCLOSE 60
-#define ZCAPCMD_GZCLOSE_R 61
-#define ZCAPCMD_GZCLOSE_W 62
-#define ZCAPCMD_GZERROR 63
-#define ZCAPCMD_GZCLEARERR 64
+#define ZCAPCMD_GZOPEN 30
+#define ZCAPCMD_GZBUFFER 31
+#define ZCAPCMD_GZSETPARAMS 32
+#define ZCAPCMD_GZREAD 33
+#define ZCAPCMD_GZWRITE 34
+#define ZCAPCMD_GZPRINTF 35
+#define ZCAPCMD_GZPUTS 36
+#define ZCAPCMD_GZGETS 46
+#define ZCAPCMD_GZPUTC 47
+#define ZCAPCMD_GZGETC 48
+#define ZCAPCMD_GZUNGETC 49
+#define ZCAPCMD_GZFLUSH 50
+#define ZCAPCMD_GZSEEK 51
+#define ZCAPCMD_GZREWIND 52
+#define ZCAPCMD_GZTELL 53
+#define ZCAPCMD_GZOFFSET 54
+#define ZCAPCMD_GZEOF 55
+#define ZCAPCMD_GZDIRECT 56
+#define ZCAPCMD_GZCLOSE 57
+#define ZCAPCMD_GZCLOSE_R 58
+#define ZCAPCMD_GZCLOSE_W 59
+#define ZCAPCMD_GZERROR 60
+#define ZCAPCMD_GZCLEARERR 61
/* checksum functions */
-#define ZCAPCMD_ADLER32 65
-#define ZCAPCMD_ADLER32_COMBINE 66
-#define ZCAPCMD_CRC32 67
-#define ZCAPCMD_CRC32_COMBINE 68
+#define ZCAPCMD_ADLER32 62
+#define ZCAPCMD_ADLER32_COMBINE 63
+#define ZCAPCMD_CRC32 64
+#define ZCAPCMD_CRC32_COMBINE 65
Modified: soc2013/dpl/head/lib/libzcap/zlibworker/zlibworker.c
==============================================================================
--- soc2013/dpl/head/lib/libzcap/zlibworker/zlibworker.c Tue Aug 20 11:06:56 2013 (r256192)
+++ soc2013/dpl/head/lib/libzcap/zlibworker/zlibworker.c Tue Aug 20 12:23:34 2013 (r256193)
@@ -5,7 +5,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <assert.h>
+#include <err.h>
#include "../commands.h"
/* Basic functions */
@@ -79,32 +79,23 @@
/* Sandbox the process */
cap_enter();
- if ((data = calloc(5*1024, 1)) == NULL) {
- perror("malloc");
- abort();
- }
+ if ((data = calloc(5*1024, 1)) == NULL)
+ err(1, "malloc\n");
-
while(1) {
- if ((result = nvlist_create(0)) == NULL) {
- fprintf(stderr, "zlibworker: Can't create result.\n");
- exit(1);
- }
+ if ((result = nvlist_create(0)) == NULL)
+ err(1, "Can't create result.\n");
+ //fprintf(stderr, "DEBUG: zlibworker waiting command\n");
if ((nvl = nvlist_recv(3)) != NULL) {
- 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 {
- fprintf(stderr, "zlibworker: nvl is NULL\n");
- exit(1);
- }
+ if (!nvlist_exists(nvl, "command"))
+ err(1, "No command.\n");
+ if (!nvlist_exists(nvl, "args"))
+ err(1, "args doesn't exist\n");
+ } else err(1, "nvl is NULL\n");
+
+ //fprintf(stderr, "DEBUG: zlibworker got command\n");
// Switch for "command"
// Get args, and call the real lib.
switch( nvlist_take_number(nvl, "command") ){
@@ -235,10 +226,10 @@
case (ZCAPCMD_GZSEEK):
zcapcmd_gzseek(nvl, result);
break;
- /*
- * All this commands have gzFile as argument,
- * and return an int (or void, in the last case).
- */
+ /*
+ * All this commands have gzFile as argument,
+ * and return an int (or void, in the last case).
+ */
case (ZCAPCMD_GZGETC):
case (ZCAPCMD_GZREWIND):
case (ZCAPCMD_GZTELL):
@@ -268,18 +259,16 @@
zcapcmd_crc32_combine(nvl, result);
break;
default:
- perror("zlibworker: unknown command");
- exit(1);
+ err(1, "Wrong command");
break;
}
- if( nvlist_send(3, result) != 0 ) {
- perror("zlibworker: Couldn't send response\n");
- exit(1);
- }
+ //fprintf(stderr, "DEBUG: zlibworker responding\n");
+ if( nvlist_send(3, result) != 0 )
+ err(1, "Couldn't send response\n");
- if (zero)
- memset(data, 0, 5*1024);
+ nvlist_destroy(nvl);
+ if (zero) memset(data, 0, 5*1024);
}
return (0);
More information about the svn-soc-all
mailing list