diff options
author | Simo Sorce <simo@redhat.com> | 2015-11-12 17:37:57 -0500 |
---|---|---|
committer | Robbie Harwood <rharwood@redhat.com> | 2015-12-01 17:54:02 -0500 |
commit | e5d0a2d58044042bd18103c934b98954d66653f9 (patch) | |
tree | b3efa2006836728e226b78d4a93b3b89af6becf3 | |
parent | ed62abc6def520fdc36798dbed4e26be7470ca39 (diff) | |
download | gss-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.am | 2 | ||||
-rw-r--r-- | proxy/tests/cli_srv_comm.c | 103 | ||||
-rw-r--r-- | proxy/tests/interposetest.c | 109 | ||||
-rw-r--r-- | proxy/tests/t_accept.c | 8 | ||||
-rw-r--r-- | proxy/tests/t_acquire.c | 16 | ||||
-rw-r--r-- | proxy/tests/t_init.c | 12 | ||||
-rw-r--r-- | proxy/tests/t_utils.h | 4 |
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); |