summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2015-11-12 17:37:57 -0500
committerRobbie Harwood <rharwood@redhat.com>2015-12-01 17:54:02 -0500
commite5d0a2d58044042bd18103c934b98954d66653f9 (patch)
treeb3efa2006836728e226b78d4a93b3b89af6becf3
parented62abc6def520fdc36798dbed4e26be7470ca39 (diff)
downloadgss-proxy-e5d0a2d58044042bd18103c934b98954d66653f9.tar.gz
gss-proxy-e5d0a2d58044042bd18103c934b98954d66653f9.tar.xz
gss-proxy-e5d0a2d58044042bd18103c934b98954d66653f9.zip
Use t_utils.h in all tests.
Avoid duplicating the same helper functions everywhere. Signed-off-by: Simo Sorce <simo@redhat.com> Reviewed-by: Robbie Harwoood <rharwood@redhat.com>
-rw-r--r--proxy/Makefile.am2
-rw-r--r--proxy/tests/cli_srv_comm.c103
-rw-r--r--proxy/tests/interposetest.c109
-rw-r--r--proxy/tests/t_accept.c8
-rw-r--r--proxy/tests/t_acquire.c16
-rw-r--r--proxy/tests/t_init.c12
-rw-r--r--proxy/tests/t_utils.h4
7 files changed, 63 insertions, 191 deletions
diff --git a/proxy/Makefile.am b/proxy/Makefile.am
index f13e740..2890727 100644
--- a/proxy/Makefile.am
+++ b/proxy/Makefile.am
@@ -186,11 +186,13 @@ cli_srv_comm_SOURCES = \
src/gp_log.c \
$(GP_RPCGEN_OBJ) \
$(GP_RPCCLI_OBJ) \
+ tests/t_utils.c \
tests/cli_srv_comm.c
interposetest_SOURCES = \
src/gp_log.c \
src/gp_debug.c \
+ tests/t_utils.c \
tests/interposetest.c
gssproxy_LDADD = \
diff --git a/proxy/tests/cli_srv_comm.c b/proxy/tests/cli_srv_comm.c
index 77fe338..45f77e5 100644
--- a/proxy/tests/cli_srv_comm.c
+++ b/proxy/tests/cli_srv_comm.c
@@ -19,77 +19,7 @@
#include "src/gp_debug.h"
#include "src/client/gssapi_gpm.h"
#include "popt.h"
-
-#define DEBUG(...) do { \
- char msg[4096]; \
- snprintf(msg, 4096, __VA_ARGS__); \
- fprintf(stderr, "%s:%d: %s", __FUNCTION__, __LINE__, msg); \
- fflush(stderr); \
-} while(0);
-
-
-int gp_send_buffer(int fd, char *buf, uint32_t len)
-{
- uint32_t size;
- size_t wn;
- size_t pos;
-
- size = htonl(len);
-
- wn = write(fd, &size, sizeof(uint32_t));
- if (wn != 4) {
- return EIO;
- }
-
- pos = 0;
- while (len > pos) {
- wn = write(fd, buf + pos, len - pos);
- if (wn == -1) {
- if (errno == EINTR) {
- continue;
- }
- return errno;
- }
- pos += wn;
- }
-
- return 0;
-}
-
-int gp_recv_buffer(int fd, char *buf, uint32_t *len)
-{
- uint32_t size;
- size_t rn;
- size_t pos;
-
- rn = read(fd, &size, sizeof(uint32_t));
- if (rn != 4) {
- return EIO;
- }
-
- *len = ntohl(size);
-
- if (*len > MAX_RPC_SIZE) {
- return EINVAL;
- }
-
- pos = 0;
- while (*len > pos) {
- rn = read(fd, buf + pos, *len - pos);
- if (rn == -1) {
- if (errno == EINTR) {
- continue;
- }
- return errno;
- }
- if (rn == 0) {
- return EIO;
- }
- pos += rn;
- }
-
- return 0;
-}
+#include "t_utils.h"
int gp_send_accept_sec_context(int fd,
gssx_arg_accept_sec_context *arg,
@@ -134,13 +64,13 @@ int gp_send_accept_sec_context(int fd,
}
/* send to proxy */
- ret = gp_send_buffer(fd, buffer, xdr_getpos(&xdr_call_ctx));
+ ret = t_send_buffer(fd, buffer, xdr_getpos(&xdr_call_ctx));
if (ret) {
return EIO;
}
/* receive answer */
- ret = gp_recv_buffer(fd, buffer, &length);
+ ret = t_recv_buffer(fd, buffer, &length);
if (ret) {
return EIO;
}
@@ -171,6 +101,7 @@ int gp_send_accept_sec_context(int fd,
}
struct athread {
+ const char **argv;
pthread_t tid;
int *cli_pipe;
int *srv_pipe;
@@ -181,6 +112,7 @@ struct athread {
void *client_thread(void *pvt)
{
+ const char **argv;
struct athread *data;
uint32_t ret_maj;
uint32_t ret_min;
@@ -198,6 +130,7 @@ void *client_thread(void *pvt)
uint32_t max_size;
data = (struct athread *)pvt;
+ argv = data->argv;
target_buf.value = (void *)data->target;
target_buf.length = strlen(data->target) + 1;
@@ -229,7 +162,7 @@ void *client_thread(void *pvt)
}
if (out_token.length != 0) {
/* send to server */
- ret = gp_send_buffer(data->srv_pipe[1],
+ ret = t_send_buffer(data->srv_pipe[1],
out_token.value, out_token.length);
if (ret) {
goto done;
@@ -244,7 +177,7 @@ void *client_thread(void *pvt)
if (ret_maj == GSS_S_CONTINUE_NEEDED) {
/* and wait for reply */
- ret = gp_recv_buffer(data->cli_pipe[0], buffer, &buflen);
+ ret = t_recv_buffer(data->cli_pipe[0], buffer, &buflen);
if (ret) {
goto done;
}
@@ -269,14 +202,14 @@ void *client_thread(void *pvt)
}
/* send msg to server */
- ret = gp_send_buffer(data->srv_pipe[1],
+ ret = t_send_buffer(data->srv_pipe[1],
msg_buf.value, msg_buf.length);
if (ret) {
goto done;
}
/* send signature to server */
- ret = gp_send_buffer(data->srv_pipe[1],
+ ret = t_send_buffer(data->srv_pipe[1],
out_token.value, out_token.length);
if (ret) {
goto done;
@@ -301,7 +234,7 @@ void *client_thread(void *pvt)
}
/* send to server */
- ret = gp_send_buffer(data->srv_pipe[1],
+ ret = t_send_buffer(data->srv_pipe[1],
out_token.value,
out_token.length);
if (ret) {
@@ -332,6 +265,7 @@ done:
void *server_thread(void *pvt)
{
+ const char **argv;
struct athread *data;
char buffer[MAX_RPC_SIZE];
uint32_t buflen;
@@ -368,6 +302,7 @@ void *server_thread(void *pvt)
int conf_state;
data = (struct athread *)pvt;
+ argv = data->argv;
target_buf.value = (void *)data->target;
target_buf.length = strlen(data->target) + 1;
@@ -471,7 +406,7 @@ void *server_thread(void *pvt)
goto done;
}
- ret = gp_recv_buffer(data->srv_pipe[0], buffer, &buflen);
+ ret = t_recv_buffer(data->srv_pipe[0], buffer, &buflen);
if (ret) {
DEBUG("Failed to get data from client!\n");
goto done;
@@ -498,7 +433,7 @@ void *server_thread(void *pvt)
}
if (out_token.length) {
- ret = gp_send_buffer(data->cli_pipe[1],
+ ret = t_send_buffer(data->cli_pipe[1],
out_token.value, out_token.length);
if (ret) {
DEBUG("Failed to send data to client!\n");
@@ -507,7 +442,7 @@ void *server_thread(void *pvt)
}
/* receive message from client */
- ret = gp_recv_buffer(data->srv_pipe[0], buffer, &buflen);
+ ret = t_recv_buffer(data->srv_pipe[0], buffer, &buflen);
if (ret) {
DEBUG("Failed to get data from client!\n");
goto done;
@@ -516,7 +451,7 @@ void *server_thread(void *pvt)
in_token.length = buflen;
/* receive signature from client */
- ret = gp_recv_buffer(data->srv_pipe[0],
+ ret = t_recv_buffer(data->srv_pipe[0],
&buffer[in_token.length], &buflen);
if (ret) {
DEBUG("Failed to get data from client!\n");
@@ -535,7 +470,7 @@ void *server_thread(void *pvt)
DEBUG("Received valid msg from client: [%s]\n", buffer);
- ret = gp_recv_buffer(data->srv_pipe[0], buffer, &buflen);
+ ret = t_recv_buffer(data->srv_pipe[0], buffer, &buflen);
if (ret) {
DEBUG("Failed to get data from client!\n");
goto done;
@@ -644,6 +579,7 @@ int main(int argc, const char *argv[])
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
+ server.argv = argv;
server.srv_pipe = srv_pipe;
server.cli_pipe = cli_pipe;
server.target = opt_target;
@@ -653,6 +589,7 @@ int main(int argc, const char *argv[])
return -1;
}
+ client.argv = argv;
client.srv_pipe = srv_pipe;
client.cli_pipe = cli_pipe;
client.target = opt_target;
diff --git a/proxy/tests/interposetest.c b/proxy/tests/interposetest.c
index 678bee7..d904002 100644
--- a/proxy/tests/interposetest.c
+++ b/proxy/tests/interposetest.c
@@ -17,81 +17,12 @@
#include "src/gp_log.h"
#include "popt.h"
#include <libintl.h>
+#include "t_utils.h"
-#define MAX_RPC_SIZE 1024*1024
#define _(STRING) gettext(STRING)
static const char *actor = "<not set>";
-
-#define DEBUG(...) do { \
- char msg[4096]; \
- snprintf(msg, 4096, __VA_ARGS__); \
- fprintf(stderr, "%s line %d: %s", actor, __LINE__, msg); \
- fflush(stderr); \
-} while(0);
-
-static int gp_send_buffer(int fd, char *buf, uint32_t len)
-{
- uint32_t size;
- size_t wn;
- size_t pos;
-
- size = htonl(len);
-
- wn = write(fd, &size, sizeof(uint32_t));
- if (wn != 4) {
- return EIO;
- }
-
- pos = 0;
- while (len > pos) {
- wn = write(fd, buf + pos, len - pos);
- if (wn == -1) {
- if (errno == EINTR) {
- continue;
- }
- return errno;
- }
- pos += wn;
- }
-
- return 0;
-}
-
-static int gp_recv_buffer(int fd, char *buf, uint32_t *len)
-{
- uint32_t size;
- size_t rn;
- size_t pos;
-
- rn = read(fd, &size, sizeof(uint32_t));
- if (rn != 4) {
- return EIO;
- }
-
- *len = ntohl(size);
-
- if (*len > MAX_RPC_SIZE) {
- return EINVAL;
- }
-
- pos = 0;
- while (*len > pos) {
- rn = read(fd, buf + pos, *len - pos);
- if (rn == -1) {
- if (errno == EINTR) {
- continue;
- }
- return errno;
- }
- if (rn == 0) {
- return EIO;
- }
- pos += rn;
- }
-
- return 0;
-}
+const char **argv;
static int gptest_inq_context(gss_ctx_id_t ctx)
{
@@ -252,7 +183,7 @@ void run_client(struct aproc *data)
}
if (out_token.length != 0) {
/* send to server */
- ret = gp_send_buffer(data->srv_pipe[1],
+ ret = t_send_buffer(data->srv_pipe[1],
out_token.value, out_token.length);
if (ret) {
DEBUG("Failed to send data to server!\n");
@@ -269,7 +200,7 @@ void run_client(struct aproc *data)
if (ret_maj == GSS_S_CONTINUE_NEEDED) {
/* and wait for reply */
- ret = gp_recv_buffer(data->cli_pipe[0], buffer, &buflen);
+ ret = t_recv_buffer(data->cli_pipe[0], buffer, &buflen);
if (ret) {
DEBUG("Failed to receive data from server!\n");
goto done;
@@ -312,7 +243,7 @@ void run_client(struct aproc *data)
goto done;
}
- ret = gp_send_buffer(data->srv_pipe[1], out_token.value, out_token.length);
+ ret = t_send_buffer(data->srv_pipe[1], out_token.value, out_token.length);
if (ret) {
DEBUG("Failed to send data to server!\n");
goto done;
@@ -320,7 +251,7 @@ void run_client(struct aproc *data)
gss_release_buffer(&ret_min, &out_token);
- ret = gp_recv_buffer(data->cli_pipe[0], buffer, &buflen);
+ ret = t_recv_buffer(data->cli_pipe[0], buffer, &buflen);
if (ret) {
DEBUG("Failed to receive data from server!\n");
goto done;
@@ -330,7 +261,7 @@ void run_client(struct aproc *data)
buffer[buflen] = '\0';
in_token.value = (void *)&buffer[buflen + 1];
- ret = gp_recv_buffer(data->cli_pipe[0], in_token.value, &buflen);
+ ret = t_recv_buffer(data->cli_pipe[0], in_token.value, &buflen);
if (ret) {
DEBUG("Failed to receive data from server!\n");
goto done;
@@ -397,13 +328,13 @@ void run_client(struct aproc *data)
goto done;
}
- ret = gp_send_buffer(data->srv_pipe[1], iov[0].buffer.value, iov[0].buffer.length);
+ ret = t_send_buffer(data->srv_pipe[1], iov[0].buffer.value, iov[0].buffer.length);
if (ret) {
DEBUG("Failed to send data to server!\n");
goto done;
}
- ret = gp_send_buffer(data->srv_pipe[1], iov[1].buffer.value, iov[1].buffer.length);
+ ret = t_send_buffer(data->srv_pipe[1], iov[1].buffer.value, iov[1].buffer.length);
if (ret) {
DEBUG("Failed to send data to server!\n");
goto done;
@@ -416,7 +347,7 @@ void run_client(struct aproc *data)
goto done;
}
- ret = gp_send_buffer(data->srv_pipe[1], out_token.value, out_token.length);
+ ret = t_send_buffer(data->srv_pipe[1], out_token.value, out_token.length);
if (ret) {
DEBUG("Failed to send data to server!\n");
goto done;
@@ -598,7 +529,7 @@ void run_server(struct aproc *data)
goto done;
}
- ret = gp_recv_buffer(data->srv_pipe[0], buffer, &buflen);
+ ret = t_recv_buffer(data->srv_pipe[0], buffer, &buflen);
if (ret) {
DEBUG("Failed to get data from client!\n");
goto done;
@@ -625,7 +556,7 @@ void run_server(struct aproc *data)
}
if (out_token.length) {
- ret = gp_send_buffer(data->cli_pipe[1],
+ ret = t_send_buffer(data->cli_pipe[1],
out_token.value, out_token.length);
if (ret) {
DEBUG("Failed to send data to client!\n");
@@ -641,7 +572,7 @@ void run_server(struct aproc *data)
goto done;
}
- ret = gp_recv_buffer(data->srv_pipe[0], buffer, &buflen);
+ ret = t_recv_buffer(data->srv_pipe[0], buffer, &buflen);
if (ret) {
DEBUG("Failed to get data from client!\n");
goto done;
@@ -671,12 +602,12 @@ void run_server(struct aproc *data)
goto done;
}
- ret = gp_send_buffer(data->cli_pipe[1], in_token.value, in_token.length);
+ ret = t_send_buffer(data->cli_pipe[1], in_token.value, in_token.length);
if (ret) {
DEBUG("Failed to send data to client!\n");
goto done;
}
- ret = gp_send_buffer(data->cli_pipe[1], out_token.value, out_token.length);
+ ret = t_send_buffer(data->cli_pipe[1], out_token.value, out_token.length);
if (ret) {
DEBUG("Failed to send data to client!\n");
goto done;
@@ -686,7 +617,7 @@ void run_server(struct aproc *data)
/* test gss_unwrap_iov */
- ret = gp_recv_buffer(data->srv_pipe[0], buffer, &buflen);
+ ret = t_recv_buffer(data->srv_pipe[0], buffer, &buflen);
if (ret) {
DEBUG("Failed to get data from client!\n");
goto done;
@@ -696,7 +627,7 @@ void run_server(struct aproc *data)
iov[0].buffer.value = buffer;
iov[0].buffer.length = buflen;
- ret = gp_recv_buffer(data->srv_pipe[0], buffer+buflen, &buflen);
+ ret = t_recv_buffer(data->srv_pipe[0], buffer+buflen, &buflen);
if (ret) {
DEBUG("Failed to get data from client!\n");
goto done;
@@ -718,7 +649,7 @@ void run_server(struct aproc *data)
goto done;
}
- ret = gp_recv_buffer(data->srv_pipe[0], buffer, &buflen);
+ ret = t_recv_buffer(data->srv_pipe[0], buffer, &buflen);
if (ret) {
DEBUG("Failed to get data from client!\n");
goto done;
@@ -870,7 +801,7 @@ done:
return ret;
}
-int main(int argc, const char *argv[])
+int main(int argc, const char *main_argv[])
{
int opt;
poptContext pc;
@@ -890,6 +821,8 @@ int main(int argc, const char *argv[])
POPT_TABLEEND
};
+ argv = main_argv;
+
pc = poptGetContext(argv[0], argc, argv, long_options, 0);
while((opt = poptGetNextOpt(pc)) != -1) {
switch(opt) {
diff --git a/proxy/tests/t_accept.c b/proxy/tests/t_accept.c
index eba0272..3afb7ac 100644
--- a/proxy/tests/t_accept.c
+++ b/proxy/tests/t_accept.c
@@ -17,7 +17,7 @@ int main(int argc, const char *argv[])
/* We get stuff from stdin and spit it out on stderr */
ret = t_recv_buffer(STDIN_FD, buffer, &buflen);
if (ret != 0) {
- DEBUG(argv[0], "Failed to read token from STDIN\n");
+ DEBUG("Failed to read token from STDIN\n");
ret = -1;
goto done;
}
@@ -37,21 +37,21 @@ int main(int argc, const char *argv[])
NULL,
NULL);
if (ret_maj) {
- DEBUG(argv[0], "Error accepting context\n");
+ DEBUG("Error accepting context\n");
t_log_failure(GSS_C_NO_OID, ret_maj, ret_min);
ret = -1;
goto done;
}
if (!out_token.length) {
- DEBUG(argv[0], "No output token ?");
+ DEBUG("No output token ?");
ret = -1;
goto done;
}
ret = t_send_buffer(STDOUT_FD, out_token.value, out_token.length);
if (ret) {
- DEBUG(argv[0], "Failed to send data to client!\n");
+ DEBUG("Failed to send data to client!\n");
ret = -1;
goto done;
}
diff --git a/proxy/tests/t_acquire.c b/proxy/tests/t_acquire.c
index aced258..e570903 100644
--- a/proxy/tests/t_acquire.c
+++ b/proxy/tests/t_acquire.c
@@ -25,7 +25,7 @@ int main(int argc, const char *argv[])
ret = t_string_to_name(argv[1], &target_name,
GSS_C_NT_HOSTBASED_SERVICE);
if (ret) {
- DEBUG(argv[0], "Failed to import server name from argv[1]\n");
+ DEBUG("Failed to import server name from argv[1]\n");
ret = -1;
goto done;
}
@@ -38,7 +38,7 @@ int main(int argc, const char *argv[])
&cred_handle,
NULL, NULL);
if (ret_maj != GSS_S_COMPLETE) {
- DEBUG(argv[0], "gss_acquire_cred() failed\n");
+ DEBUG("gss_acquire_cred() failed\n");
t_log_failure(GSS_C_NO_OID, ret_maj, ret_min);
ret = -1;
goto done;
@@ -47,7 +47,7 @@ int main(int argc, const char *argv[])
ret_maj = gss_store_cred(&ret_min, cred_handle, GSS_C_INITIATE,
GSS_C_NULL_OID, 1, 1, NULL, NULL);
if (ret_maj) {
- DEBUG(argv[0], "Error saving credentials\n");
+ DEBUG("Error saving credentials\n");
t_log_failure(GSS_C_NO_OID, ret_maj, ret_min);
ret = -1;
goto done;
@@ -69,7 +69,7 @@ int main(int argc, const char *argv[])
NULL,
NULL);
if (ret_maj != GSS_S_CONTINUE_NEEDED) {
- DEBUG(argv[0], "gss_init_sec_context() failed\n");
+ DEBUG("gss_init_sec_context() failed\n");
t_log_failure(GSS_C_NO_OID, ret_maj, ret_min);
ret = -1;
goto done;
@@ -77,7 +77,7 @@ int main(int argc, const char *argv[])
/* We get stuff from stdin and spit it out on stderr */
if (!out_token.length) {
- DEBUG(argv[0], "No output token ?");
+ DEBUG("No output token ?");
ret = -1;
goto done;
}
@@ -96,14 +96,14 @@ int main(int argc, const char *argv[])
NULL,
NULL);
if (ret_maj) {
- DEBUG(argv[0], "Error accepting context\n");
+ DEBUG("Error accepting context\n");
t_log_failure(GSS_C_NO_OID, ret_maj, ret_min);
ret = -1;
goto done;
}
if (!in_token.length) {
- DEBUG(argv[0], "No output token ?");
+ DEBUG("No output token ?");
ret = -1;
goto done;
}
@@ -124,7 +124,7 @@ int main(int argc, const char *argv[])
NULL,
NULL);
if (ret_maj) {
- DEBUG(argv[0], "Error initializing context\n");
+ DEBUG("Error initializing context\n");
t_log_failure(GSS_C_NO_OID, ret_maj, ret_min);
ret = -1;
goto done;
diff --git a/proxy/tests/t_init.c b/proxy/tests/t_init.c
index a6499db..7714e03 100644
--- a/proxy/tests/t_init.c
+++ b/proxy/tests/t_init.c
@@ -17,7 +17,7 @@ int main(int argc, const char *argv[])
ret = t_string_to_name(argv[1], &name, GSS_C_NT_HOSTBASED_SERVICE);
if (ret) {
- DEBUG(argv[0], "Failed to import server name from argv[1]\n");
+ DEBUG("Failed to import server name from argv[1]\n");
ret = -1;
goto done;
}
@@ -36,7 +36,7 @@ int main(int argc, const char *argv[])
NULL,
NULL);
if (ret_maj != GSS_S_CONTINUE_NEEDED) {
- DEBUG(argv[0], "gss_init_sec_context() failed\n");
+ DEBUG("gss_init_sec_context() failed\n");
t_log_failure(GSS_C_NO_OID, ret_maj, ret_min);
ret = -1;
goto done;
@@ -44,21 +44,21 @@ int main(int argc, const char *argv[])
/* We get stuff from stdin and spit it out on stderr */
if (!out_token.length) {
- DEBUG(argv[0], "No output token ?");
+ DEBUG("No output token ?");
ret = -1;
goto done;
}
ret = t_send_buffer(STDOUT_FD, out_token.value, out_token.length);
if (ret) {
- DEBUG(argv[0], "Failed to send data to server!\n");
+ DEBUG("Failed to send data to server!\n");
ret = -1;
goto done;
}
ret = t_recv_buffer(STDIN_FD, buffer, &buflen);
if (ret != 0) {
- DEBUG(argv[0], "Failed to read token from STDIN\n");
+ DEBUG("Failed to read token from STDIN\n");
ret = -1;
goto done;
}
@@ -80,7 +80,7 @@ int main(int argc, const char *argv[])
NULL,
NULL);
if (ret_maj) {
- DEBUG(argv[0], "Error initializing context\n");
+ DEBUG("Error initializing context\n");
t_log_failure(GSS_C_NO_OID, ret_maj, ret_min);
ret = -1;
goto done;
diff --git a/proxy/tests/t_utils.h b/proxy/tests/t_utils.h
index c0469d4..04e2d94 100644
--- a/proxy/tests/t_utils.h
+++ b/proxy/tests/t_utils.h
@@ -14,10 +14,10 @@
#define discard_const(ptr) ((void *)((uintptr_t)(ptr)))
-#define DEBUG(name, ...) do { \
+#define DEBUG(...) do { \
char msg[4096]; \
snprintf(msg, 4096, __VA_ARGS__); \
- fprintf(stderr, "%s[%s:%d]: %s", name, __FUNCTION__, __LINE__, msg); \
+ fprintf(stderr, "%s[%s:%d]: %s", argv[0], __FUNCTION__, __LINE__, msg); \
fflush(stderr); \
} while(0);