summaryrefslogtreecommitdiff
path: root/lib/libposix1e
diff options
context:
space:
mode:
authorRobert Watson <rwatson@FreeBSD.org>2000-10-13 17:12:58 +0000
committerRobert Watson <rwatson@FreeBSD.org>2000-10-13 17:12:58 +0000
commitab024bb02e15bb031c2b2e3377f44569526b1952 (patch)
treeac316b98fc8c8b89efec7094f055143b60e537c8 /lib/libposix1e
parente11cbdb767bd8b3f6687603ff26173ae478ec8de (diff)
Notes
Diffstat (limited to 'lib/libposix1e')
-rw-r--r--lib/libposix1e/cap_get_flag.c3
-rw-r--r--lib/libposix1e/cap_set_flag.c15
2 files changed, 10 insertions, 8 deletions
diff --git a/lib/libposix1e/cap_get_flag.c b/lib/libposix1e/cap_get_flag.c
index 6c549e61c3f0..37595ee8ed59 100644
--- a/lib/libposix1e/cap_get_flag.c
+++ b/lib/libposix1e/cap_get_flag.c
@@ -37,8 +37,7 @@ int
cap_get_flag(cap_t cap_p, cap_value_t cap, cap_flag_t flag,
cap_flag_value_t *value_p)
{
- cap_flag_value_t result;
- u_int32_t *mask;
+ u_int64_t mask;
switch(flag) {
diff --git a/lib/libposix1e/cap_set_flag.c b/lib/libposix1e/cap_set_flag.c
index e6e2259c9db0..bf150e93a138 100644
--- a/lib/libposix1e/cap_set_flag.c
+++ b/lib/libposix1e/cap_set_flag.c
@@ -37,28 +37,31 @@ int
cap_set_flag(cap_t cap_p, cap_flag_t flag, int ncap, cap_value_t caps[],
cap_flag_value_t value)
{
- u_int *mask;
+ u_int64_t *mask;
int i;
switch(flag) {
case CAP_EFFECTIVE:
- mask = &cap_p->c_effective[0];
+ mask = &cap_p->c_effective;
break;
case CAP_INHERITABLE:
- mask = &cap_p->c_inheritable[0];
+ mask = &cap_p->c_inheritable;
break;
case CAP_PERMITTED:
- mask = &cap_p->c_permitted[0];
+ mask = &cap_p->c_permitted;
break;
default:
return (EINVAL);
}
+ if (value != CAP_SET && value != CAP_CLEAR)
+ return (EINVAL);
+
for (i = 0; i < ncap; i++)
if (value == CAP_SET)
- SET_CAPABILITY(mask, caps[i]);
+ SET_CAPABILITY(*mask, caps[i]);
else
- UNSET_CAPABILITY(mask, caps[i]);
+ UNSET_CAPABILITY(*mask, caps[i]);
return (0);
}