aboutsummaryrefslogtreecommitdiff
path: root/libcap/RCS/cap_extint.c,v
diff options
context:
space:
mode:
Diffstat (limited to 'libcap/RCS/cap_extint.c,v')
-rw-r--r--libcap/RCS/cap_extint.c,v260
1 files changed, 0 insertions, 260 deletions
diff --git a/libcap/RCS/cap_extint.c,v b/libcap/RCS/cap_extint.c,v
deleted file mode 100644
index 3f07499..0000000
--- a/libcap/RCS/cap_extint.c,v
+++ /dev/null
@@ -1,260 +0,0 @@
-head 1.3;
-access;
-symbols;
-locks; strict;
-comment @ * @;
-
-
-1.3
-date 98.05.24.22.54.09; author morgan; state Exp;
-branches;
-next 1.2;
-
-1.2
-date 97.04.28.00.57.11; author morgan; state Exp;
-branches;
-next 1.1;
-
-1.1
-date 97.04.21.04.32.52; author morgan; state Exp;
-branches;
-next ;
-
-
-desc
-@first take
-@
-
-
-1.3
-log
-@updated for 2.1.104
-@
-text
-@/*
- * $Id: cap_extint.c,v 1.2 1997/04/28 00:57:11 morgan Exp morgan $
- *
- * Copyright (c) 1997-8 Andrew G Morgan <morgan@@linux.kernel.org>
- *
- * See end of file for Log.
- *
- * This file deals with exchanging internal and external
- * representations of capability sets.
- */
-
-#include "libcap.h"
-
-/*
- * External representation for capabilities. (exported as a fixed
- * length (void *))
- */
-#define CAP_EXT_MAGIC "\220\302\001\121"
-#define CAP_EXT_MAGIC_SIZE 4
-const static __u8 external_magic[CAP_EXT_MAGIC_SIZE+1] = CAP_EXT_MAGIC;
-
-struct cap_ext_struct {
- __u8 magic[CAP_EXT_MAGIC_SIZE];
- __u8 length_of_capset;
-/* note, we arrange these so the caps are stacked with byte-size
- resolution */
- __u8 bytes[CAP_SET_SIZE][NUMBER_OF_CAP_SETS];
-};
-
-/*
- * return size of external capability set
- */
-
-ssize_t cap_size(cap_t caps)
-{
- return sizeof(struct cap_ext_struct);
-}
-
-/*
- * Copy the internal (cap_d) capability set into an external
- * representation. The external representation is portable to other
- * Linux architectures.
- */
-
-ssize_t cap_copy_ext(void *cap_ext, cap_t cap_d, ssize_t length)
-{
- struct cap_ext_struct *result = (struct cap_ext_struct *) cap_ext;
- __u32 *from = (__u32 *) &(cap_d->set);
- int i;
-
- /* valid arguments? */
- if (!good_cap_t(cap_d) || length < sizeof(struct cap_ext_struct)
- || cap_ext == NULL) {
- errno = EINVAL;
- return -1;
- }
-
- /* fill external capability set */
- memcpy(&result->magic, external_magic, CAP_EXT_MAGIC_SIZE);
- result->length_of_capset = CAP_SET_SIZE;
-
- for (i=0; i<NUMBER_OF_CAP_SETS; ++i) {
- int j;
- for (j=0; j<CAP_SET_SIZE; ) {
- __u32 val = *from++;
-
- result->bytes[j++][i] = val & 0xFF;
- result->bytes[j++][i] = (val >>= 8) & 0xFF;
- result->bytes[j++][i] = (val >>= 8) & 0xFF;
- result->bytes[j++][i] = (val >> 8) & 0xFF;
- }
- }
-
- /* All done: return length of external representation */
- return (sizeof(struct cap_ext_struct));
-}
-
-/*
- * Import an external representation to produce an internal rep.
- * the internal rep should be liberated with cap_free().
- */
-
-/*
- * XXX - need to take a little more care when importing small
- * capability sets.
- */
-
-cap_t cap_copy_int(const void *cap_ext)
-{
- const struct cap_ext_struct *export =
- (const struct cap_ext_struct *) cap_ext;
- cap_t cap_d;
- int set, blen;
- __u32 * to = (__u32 *) &cap_d->set;
-
- /* Does the external representation make sense? */
- if (export == NULL || !memcmp(export->magic, external_magic
- , CAP_EXT_MAGIC_SIZE)) {
- errno = EINVAL;
- return NULL;
- }
-
- /* Obtain a new internal capability set */
- if (!(cap_d = cap_init()))
- return NULL;
-
- blen = export->length_of_capset;
- for (set=0; set<=NUMBER_OF_CAP_SETS; ++set) {
- int blk;
- int bno = 0;
- for (blk=0; blk<(CAP_SET_SIZE/4); ++blk) {
- __u32 val = 0;
-
- if (bno != blen)
- val = export->bytes[bno++][set];
- if (bno != blen)
- val |= export->bytes[bno++][set] << 8;
- if (bno != blen)
- val |= export->bytes[bno++][set] << 16;
- if (bno != blen)
- val |= export->bytes[bno++][set] << 24;
-
- *to++ = val;
- }
- }
-
- /* all done */
- return cap_d;
-}
-
-/*
- * $Log: cap_extint.c,v $
- * Revision 1.2 1997/04/28 00:57:11 morgan
- * fixes and zefram's patches
- *
- * Revision 1.1 1997/04/21 04:32:52 morgan
- * Initial revision
- *
- */
-@
-
-
-1.2
-log
-@fixes and zefram's patches
-@
-text
-@d2 1
-a2 1
- * $Id: cap_extint.c,v 1.1 1997/04/21 04:32:52 morgan Exp morgan $
-d4 1
-a4 1
- * Copyright (c) 1997 Andrew G Morgan <morgan@@parc.power.net>
-d20 1
-a20 1
-static __u8 external_magic[CAP_EXT_MAGIC_SIZE+1] = CAP_EXT_MAGIC;
-d25 3
-a27 1
- __u8 bytes[sizeof(struct __cap_s)][3];
-d48 1
-d59 2
-a60 2
- memcpy(&result->magic,external_magic,CAP_EXT_MAGIC_SIZE);
- result->length_of_capset = sizeof(struct __cap_s);
-d62 1
-a62 1
- for (i=CAP_EFFECTIVE; i<=CAP_PERMITTED; ++i) {
-d64 7
-a70 9
- for (j=0; j<__CAP_BLKS; ++j) {
- __u32 val;
- int k = j << 2;
-
- val = cap_d->set[i]._blk[j];
- result->bytes[k++][i] = val & 0xFF;
- result->bytes[k++][i] = (val >>= 8) & 0xFF;
- result->bytes[k++][i] = (val >>= 8) & 0xFF;
- result->bytes[k][i] = (val >> 8) & 0xFF;
-d94 1
-d108 1
-a108 1
- for (set=CAP_EFFECTIVE; set<=CAP_PERMITTED; ++set) {
-d111 1
-a111 1
- for (blk=0; blk<__CAP_BLKS; ++blk) {
-d123 1
-a123 1
- cap_d->set[set]._blk[blk] = val;
-d133 3
-@
-
-
-1.1
-log
-@Initial revision
-@
-text
-@d2 1
-a2 1
- * $Id$
-d18 3
-d23 1
-d29 9
-d56 1
-d92 1
-d95 2
-a96 1
- if (export == NULL || export->length_of_capset > sizeof(struct __cap_s)) {
-d102 20
-a121 13
- if ((cap_d = cap_init())) {
- int i;
- for (i=CAP_EFFECTIVE; i<=CAP_PERMITTED; ++i) {
- int j;
- for (j=0; j<__CAP_BLKS; ++j) {
- __u32 val;
- int k = (j+1) << 2;
-
- val = export->bytes[--k][i] << 8;
- val |= export->bytes[--k][i]; val <<= 8;
- val |= export->bytes[--k][i]; val <<= 8;
- cap_d->set[i]._blk[j] = val | export->bytes[--k][i];
- }
-d130 4
-a133 1
- * $Log$
-@