diff options
author | Sven Eden <yamakuzure@gmx.net> | 2017-08-30 07:49:50 +0200 |
---|---|---|
committer | Sven Eden <yamakuzure@gmx.net> | 2017-08-30 07:49:50 +0200 |
commit | 311b1ceb2cc3e69130c46b0485b2c55a1b166d62 (patch) | |
tree | 987eec04d8148187836219929824bcd7f210bde2 /src/basic/capability-util.c | |
parent | 9947abfa61364034e316bc7e578cda4ab2c2b9e7 (diff) |
Prep v235: Apply pending upstream updates in src/basic [1/4]
Diffstat (limited to 'src/basic/capability-util.c')
-rw-r--r-- | src/basic/capability-util.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/basic/capability-util.c b/src/basic/capability-util.c index 952bcc2d7..294dcc8d4 100644 --- a/src/basic/capability-util.c +++ b/src/basic/capability-util.c @@ -372,4 +372,19 @@ int drop_capability(cap_value_t cv) { return 0; } + +bool ambient_capabilities_supported(void) { + static int cache = -1; + + if (cache >= 0) + return cache; + + /* If PR_CAP_AMBIENT returns something valid, or an unexpected error code we assume that ambient caps are + * available. */ + + cache = prctl(PR_CAP_AMBIENT, PR_CAP_AMBIENT_IS_SET, CAP_KILL, 0, 0) >= 0 || + !IN_SET(errno, EINVAL, EOPNOTSUPP, ENOSYS); + + return cache; +} #endif // 0 |