summaryrefslogtreecommitdiffstats
path: root/lib/libposix1e
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2000-06-04 22:17:11 +0000
committerrwatson <rwatson@FreeBSD.org>2000-06-04 22:17:11 +0000
commit791168a446ca90f9f452a6a7a7f2a5e312adc0e2 (patch)
tree5238a0160ef0753b8706a450bedf1888341bf6aa /lib/libposix1e
parentd12b21d070a6d9a5c3302da4f67d8662c4df30ae (diff)
downloadFreeBSD-src-791168a446ca90f9f452a6a7a7f2a5e312adc0e2.zip
FreeBSD-src-791168a446ca90f9f452a6a7a7f2a5e312adc0e2.tar.gz
o Introduce libposix1e capability support routines, which provide a
standardized interface to the capability support in TrustedBSD. o Not currently enabled in Makefile, as this code depends on syscalls and include files that will be committed at a later date. Obtained from: TrustedBSD Project
Diffstat (limited to 'lib/libposix1e')
-rw-r--r--lib/libposix1e/cap_clear.c41
-rw-r--r--lib/libposix1e/cap_dup.c48
-rw-r--r--lib/libposix1e/cap_free.c41
-rw-r--r--lib/libposix1e/cap_get_flag.c64
-rw-r--r--lib/libposix1e/cap_get_proc.c55
-rw-r--r--lib/libposix1e/cap_init.c52
-rw-r--r--lib/libposix1e/cap_set_flag.c61
-rw-r--r--lib/libposix1e/cap_set_proc.c43
8 files changed, 405 insertions, 0 deletions
diff --git a/lib/libposix1e/cap_clear.c b/lib/libposix1e/cap_clear.c
new file mode 100644
index 0000000..af4599d
--- /dev/null
+++ b/lib/libposix1e/cap_clear.c
@@ -0,0 +1,41 @@
+/*-
+ * Copyright (c) 2000 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+/*
+ * TrustedBSD Project - support for POSIX.1e process capabilities
+ */
+
+#include <sys/types.h>
+#include <sys/capability.h>
+
+int
+cap_clear(cap_t cap_p)
+{
+
+ bzero(cap_p, sizeof(*cap_p));
+ return (0);
+}
diff --git a/lib/libposix1e/cap_dup.c b/lib/libposix1e/cap_dup.c
new file mode 100644
index 0000000..57c726c
--- /dev/null
+++ b/lib/libposix1e/cap_dup.c
@@ -0,0 +1,48 @@
+/*-
+ * Copyright (c) 2000 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+/*
+ * TrustedBSD Project - support for POSIX.1e process capabilities
+ */
+
+#include <sys/types.h>
+#include <sys/capability.h>
+
+#include <stdlib.h>
+
+cap_t
+cap_dup(cap_t cap_p)
+{
+ cap_t newcap;
+
+ if (!(newcap = cap_init()))
+ return(NULL);
+
+ bcopy(cap_p, newcap, sizeof(*cap_p));
+
+ return (newcap);
+}
diff --git a/lib/libposix1e/cap_free.c b/lib/libposix1e/cap_free.c
new file mode 100644
index 0000000..5c39b27
--- /dev/null
+++ b/lib/libposix1e/cap_free.c
@@ -0,0 +1,41 @@
+/*-
+ * Copyright (c) 2000 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+/*
+ * TrustedBSD Project - support for POSIX.1e process capabilities
+ */
+
+#include <sys/types.h>
+#include <sys/capability.h>
+
+int
+cap_free(void *obj_d)
+{
+
+ free(obj_d);
+ return (0);
+}
diff --git a/lib/libposix1e/cap_get_flag.c b/lib/libposix1e/cap_get_flag.c
new file mode 100644
index 0000000..6c549e61
--- /dev/null
+++ b/lib/libposix1e/cap_get_flag.c
@@ -0,0 +1,64 @@
+/*-
+ * Copyright (c) 2000 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+/*
+ * TrustedBSD Project - support for POSIX.1e process capabilities
+ */
+
+#include <sys/types.h>
+#include <sys/capability.h>
+#include <sys/errno.h>
+
+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;
+
+
+ switch(flag) {
+ case CAP_EFFECTIVE:
+ mask = cap_p->c_effective;
+ break;
+ case CAP_INHERITABLE:
+ mask = cap_p->c_inheritable;
+ break;
+ case CAP_PERMITTED:
+ mask = cap_p->c_permitted;
+ break;
+ default:
+ return (EINVAL);
+ }
+
+ if (IS_CAP_SET(mask, cap))
+ *value_p = CAP_SET;
+ else
+ *value_p = CAP_CLEAR;
+
+ return (0);
+}
diff --git a/lib/libposix1e/cap_get_proc.c b/lib/libposix1e/cap_get_proc.c
new file mode 100644
index 0000000..5078a2a
--- /dev/null
+++ b/lib/libposix1e/cap_get_proc.c
@@ -0,0 +1,55 @@
+/*-
+ * Copyright (c) 2000 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+/*
+ * TrustedBSD Project - support for POSIX.1e process capabilities
+ */
+
+#include <sys/types.h>
+#include <sys/capability.h>
+#include <sys/errno.h>
+
+#include <stdlib.h>
+
+cap_t
+cap_get_proc(void)
+{
+ struct cap *cap;
+ int error;
+
+ cap = cap_init();
+ if (!cap)
+ return (NULL);
+
+ error = __cap_get_proc(&cap);
+ if (error) {
+ cap_free(cap);
+ return (NULL);
+ }
+
+ return (cap);
+}
diff --git a/lib/libposix1e/cap_init.c b/lib/libposix1e/cap_init.c
new file mode 100644
index 0000000..163ecce
--- /dev/null
+++ b/lib/libposix1e/cap_init.c
@@ -0,0 +1,52 @@
+/*-
+ * Copyright (c) 2000 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+/*
+ * TrustedBSD Project - support for POSIX.1e process capabilities
+ */
+
+#include <sys/types.h>
+#include <sys/capability.h>
+#include <sys/errno.h>
+
+#include <stdlib.h>
+
+cap_t
+cap_init(void)
+{
+ struct cap *cap;
+
+ cap = malloc(sizeof(struct cap));
+ if (!cap) {
+ errno = ENOMEM;
+ return (NULL);
+ }
+
+ bzero(cap, sizeof(struct cap));
+
+ return (cap);
+}
diff --git a/lib/libposix1e/cap_set_flag.c b/lib/libposix1e/cap_set_flag.c
new file mode 100644
index 0000000..4d3d792
--- /dev/null
+++ b/lib/libposix1e/cap_set_flag.c
@@ -0,0 +1,61 @@
+/*-
+ * Copyright (c) 2000 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+/*
+ * TrustedBSD Project - support for POSIX.1e process capabilities
+ */
+
+#include <sys/types.h>
+#include <sys/capability.h>
+#include <sys/errno.h>
+
+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;
+ int i;
+
+ switch(flag) {
+ case CAP_EFFECTIVE:
+ mask = &cap_p->c_effective[0];
+ break;
+ case CAP_INHERITABLE:
+ mask = &cap_p->c_inheritable[0];
+ break;
+ case CAP_PERMITTED:
+ mask = &cap_p->c_permitted[0];
+ break;
+ default:
+ return (EINVAL);
+ }
+
+ for (i = 0; i < ncap; i++)
+ SET_CAPABILITY(mask, caps[i]);
+
+ return (0);
+}
diff --git a/lib/libposix1e/cap_set_proc.c b/lib/libposix1e/cap_set_proc.c
new file mode 100644
index 0000000..e86c4bb
--- /dev/null
+++ b/lib/libposix1e/cap_set_proc.c
@@ -0,0 +1,43 @@
+/*-
+ * Copyright (c) 2000 Robert N. M. Watson
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+/*
+ * TrustedBSD Project - support for POSIX.1e process capabilities
+ */
+
+#include <sys/types.h>
+#include <sys/capability.h>
+
+#include <sys/errno.h>
+
+int
+cap_set_proc(cap_t cap_p)
+{
+ int error;
+
+ return (__cap_set_proc(cap_p));
+}
OpenPOWER on IntegriCloud