From 1e10d30b41b65dbd520e01adc5fe686cb92b0f12 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Fri, 10 Nov 2023 11:28:19 +0000 Subject: Prepare for 2.7.0.0. Better s6-tlsc-io interface. Signed-off-by: Laurent Bercot --- src/tls/s6tls_clean_and_exec.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) (limited to 'src/tls/s6tls_clean_and_exec.c') diff --git a/src/tls/s6tls_clean_and_exec.c b/src/tls/s6tls_clean_and_exec.c index 9432e3a..9c1026b 100644 --- a/src/tls/s6tls_clean_and_exec.c +++ b/src/tls/s6tls_clean_and_exec.c @@ -1,6 +1,7 @@ /* ISC license. */ -#include +#include +#include #include #include @@ -9,6 +10,12 @@ #include "s6tls-internal.h" +static int startswith (void const *a, void const *b) +{ + char const *bb = *(char const *const *)b ; + return strncmp(a, bb, strlen(bb)) ; +} + void s6tls_clean_and_exec (char const *const *argv, uint32_t options, char const *modif, size_t modiflen) { if (options & 1) @@ -17,25 +24,20 @@ void s6tls_clean_and_exec (char const *const *argv, uint32_t options, char const { "CADIR=", "CAFILE=", - "KEYFILE=", + "CERTFILE:", "CERTFILE=", - "TLS_UID=", - "TLS_GID=", "KEYFILE:", - "CERTFILE:", - 0 + "KEYFILE=", + "TLS_GID=", + "TLS_UID=" } ; char const *const *envp = (char const *const *)environ ; size_t m = 0 ; size_t n = env_len(envp) ; char const *newenvp[n + 1] ; for (; *envp ; envp++) - { - char const *const *var = toclean ; - for (; *var ; var++) - if (str_start(*envp, *var)) break ; - if (!*var) newenvp[m++] = *envp ; - } + if (!bsearch(*envp, toclean, sizeof(toclean)/sizeof(char const *), sizeof(char const *), &startswith)) + newenvp[m++] = *envp ; newenvp[m] = 0 ; xmexec_fm(argv, newenvp, m, modif, modiflen) ; } -- cgit v1.3.1