diff options
| author | Laurent Bercot <ska-skaware@skarnet.org> | 2015-01-15 20:51:39 +0000 |
|---|---|---|
| committer | Laurent Bercot <ska-skaware@skarnet.org> | 2015-01-15 20:51:39 +0000 |
| commit | ebfd0ba17e0d4b220725018d16e294e8e22a1745 (patch) | |
| tree | 4b29683050ce9e8f24f1920f1be38b2f837ef5ad /src/libs6net/s6net_accessrules_backend_fs.c | |
| parent | 20c7d8e1b328155145ce9e8648435e127b60c208 (diff) | |
| download | s6-networking-ebfd0ba17e0d4b220725018d16e294e8e22a1745.tar.gz | |
Move Unix domain socket and access control stuff to s6.
Move seekablepipe to s6-portable-utils.
Version: 2.0.1.0, release candidate
Diffstat (limited to 'src/libs6net/s6net_accessrules_backend_fs.c')
| -rw-r--r-- | src/libs6net/s6net_accessrules_backend_fs.c | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/src/libs6net/s6net_accessrules_backend_fs.c b/src/libs6net/s6net_accessrules_backend_fs.c deleted file mode 100644 index d609285..0000000 --- a/src/libs6net/s6net_accessrules_backend_fs.c +++ /dev/null @@ -1,58 +0,0 @@ -/* ISC license. */ - -#include <unistd.h> -#include <errno.h> -#include <skalibs/bytestr.h> -#include <skalibs/fmtscan.h> -#include <skalibs/stralloc.h> -#include <skalibs/djbunix.h> -#include <s6-networking/accessrules.h> - -s6net_accessrules_result_t s6net_accessrules_backend_fs (char const *key, unsigned int keylen, void *data, s6net_accessrules_params_t *params) -{ - char *dir = data ; - unsigned int dirlen = str_len(dir) ; - unsigned int envbase = params->env.len ; - int wasnull = !params->env.s ; - { - char tmp[dirlen + keylen + 10] ; - byte_copy(tmp, dirlen, dir) ; - tmp[dirlen] = '/' ; - byte_copy(tmp + dirlen + 1, keylen, key) ; - byte_copy(tmp + dirlen + keylen + 1, 7, "/allow") ; - if (access(tmp, R_OK) < 0) - { - if ((errno != EACCES) && (errno != ENOENT)) - return S6NET_ACCESSRULES_ERROR ; - byte_copy(tmp + dirlen + keylen + 2, 5, "deny") ; - return (access(tmp, R_OK) == 0) ? S6NET_ACCESSRULES_DENY : - (errno != EACCES) && (errno != ENOENT) ? S6NET_ACCESSRULES_ERROR : - S6NET_ACCESSRULES_NOTFOUND ; - } - byte_copy(tmp + dirlen + keylen + 2, 4, "env") ; - if ((envdir(tmp, ¶ms->env) < 0) && (errno != ENOENT)) - return S6NET_ACCESSRULES_ERROR ; - if (!stralloc_readyplus(¶ms->exec, 4097)) - { - if (wasnull) stralloc_free(¶ms->env) ; - else params->env.len = envbase ; - return S6NET_ACCESSRULES_ERROR ; - } - byte_copy(tmp + dirlen + keylen + 2, 5, "exec") ; - { - register int r = openreadnclose(tmp, params->exec.s + params->exec.len, 4096) ; - if ((r < 0) && (errno != EACCES) && (errno != ENOENT)) - { - if (wasnull) stralloc_free(¶ms->env) ; - else params->env.len = envbase ; - return S6NET_ACCESSRULES_ERROR ; - } - if (r > 0) - { - params->exec.len += r ; - params->exec.s[params->exec.len++] = 0 ; - } - } - } - return S6NET_ACCESSRULES_ALLOW ; -} |
