diff options
| author | Laurent Bercot <ska-skaware@skarnet.org> | 2016-12-04 13:44:23 +0000 |
|---|---|---|
| committer | Laurent Bercot <ska-skaware@skarnet.org> | 2016-12-04 13:44:23 +0000 |
| commit | 5d38ea056c82221a0ddc206cd57dd7c1852a3159 (patch) | |
| tree | 9494c8025aa9e0ffc3402eba9fd93b4843fe07a6 /src/sbearssl/sbearssl_clean_tls_and_spawn.c | |
| parent | 05f12f4e141e94b3aee7ec79eb6fb47ffd56a119 (diff) | |
| download | s6-networking-5d38ea056c82221a0ddc206cd57dd7c1852a3159.tar.gz | |
Remove s6-tls* dependency to libs6net. Improve gen-deps to make dynlinking easier.
Diffstat (limited to 'src/sbearssl/sbearssl_clean_tls_and_spawn.c')
| -rw-r--r-- | src/sbearssl/sbearssl_clean_tls_and_spawn.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/sbearssl/sbearssl_clean_tls_and_spawn.c b/src/sbearssl/sbearssl_clean_tls_and_spawn.c new file mode 100644 index 0000000..258db90 --- /dev/null +++ b/src/sbearssl/sbearssl_clean_tls_and_spawn.c @@ -0,0 +1,21 @@ +/* ISC license. */ + +#include <sys/types.h> +#include <skalibs/env.h> +#include <skalibs/djbunix.h> +#include "sbearssl-internal.h" + +pid_t sbearssl_clean_tls_and_spawn (char const *const *argv, char const *const *envp, int *fds, uint32_t options) +{ + if (!(options & 1)) return child_spawn2(argv[0], argv, envp, fds) ; + else + { + char const modifs[] = "CADIR\0CAFILE\0KEYFILE\0CERTFILE\0TLS_UID\0TLS_GID" ; + size_t modiflen = sizeof(modifs) ; + size_t n = env_len(envp) ; + char const *newenv[n + 7] ; + size_t newenvlen = env_merge(newenv, n+7, envp, n, modifs, modiflen) ; + if (!newenvlen) return 0 ; + return child_spawn2(argv[0], argv, newenv, fds) ; + } +} |
