1CAP_COPY_EXT(3) Linux Programmer's Manual CAP_COPY_EXT(3)
2
3
4
6 cap_copy_ext, cap_size, cap_copy_int - capability state external repre‐
7 sentation translation
8
10 #include <sys/capability.h>
11
12 ssize_t cap_size(cap_t cap_p);
13
14 ssize_t cap_copy_ext(void *ext_p, cap_t cap_p, ssize_t size);
15
16 cap_t cap_copy_int(const void *ext_p);
17
19 cc ... -lcap
20
22 These functions translate a capability state from an internal represen‐
23 tation into an external one. The external representation is an
24 exportable, contiguous, persistent representation of a capability state
25 in user-managed space. The internal representation is managed by the
26 capability functions in working storage.
27
28 cap_size returns the total length (in bytes) that the capability state
29 in working storage identified by cap_p would require when converted by
30 cap_copy_ext. This function is used primarily to determine the amount
31 of buffer space that must be provided to the cap_copy_ext function in
32 order to hold the capability data record created from cap_p.
33
34 cap_copy_ext copies a capability state in working storage, identified
35 by cap_p, from system managed space to user-managed space (pointed to
36 by ext_p) and returns the length of the resulting data record. The
37 size parameter represents the maximum size, in bytes, of the resulting
38 data record. The cap_copy_ext function will do any conversions neces‐
39 sary to convert the capability state from the undefined internal format
40 to an exportable, contiguous, persistent data record. It is the
41 responsibility of the user to allocate a buffer large enough to hold
42 the copied data. The buffer length required to hold the copied data
43 may be obtained by a call to the cap_size function.
44
45 cap_copy_int copies a capability state from a capability data record in
46 user-managed space to a new capability state in working storage, allo‐
47 cating any memory necessary, and returning a pointer to the newly cre‐
48 ated capability state. The function initializes the capability state
49 and then copies the capability state from the record painted to by
50 ext_p into the capability state, converting, if necessary, the data
51 from a contiguous, persistent format to an undefined, internal format.
52 Once copied into internal format, the object can be manipulated by the
53 capability state manipulation functions. Note that the record pointed
54 to by ext_p must have been obtained from a previous, successful call to
55 cap_copy_ext for this function to work successfully. The caller should
56 free any releasable memory, when the capability state in working stor‐
57 age is no longer required, by calling cap_free with the cap_t as an
58 argument.
59
61 cap_size returns the length required to hold a capability data record
62 on success, and -1 on failure.
63
64 cap_copy_ext returns the number of bytes placed in the user managed
65 space pointed to by ext_p on success, and -1 on failure.
66
67 cap_copy_int returns a pointer to the newly created capability state in
68 working storage on success, and NULL on failure.
69
70 On failure, errno(3) is set to EINVAL, ENOMEM, or ERANGE.
71
73 These functions are specified by POSIX.1e.
74
76 cap_clear(3), cap_from_text(3), cap_get_file(3), cap_get_proc(3),
77 cap_init(3)
78
79
80
81 26th May 1997 CAP_COPY_EXT(3)