[d4764b6] | 1 | Submitted By: Chris Staub (chris at cross-lfs dot org)
|
---|
| 2 | Date: 2014-01-05
|
---|
| 3 | Initial Package Version: 2.23
|
---|
| 4 | Origin: Upstream
|
---|
| 5 | Upstream Status: Applied
|
---|
| 6 | Description: Fixes libcap headers to allow other programs to link to libcap
|
---|
| 7 |
|
---|
| 8 | diff -Naur libcap-2.23.orig/Make.Rules libcap-2.23/Make.Rules
|
---|
| 9 | --- libcap-2.23.orig/Make.Rules 2013-12-24 14:23:11.000000000 -0500
|
---|
| 10 | +++ libcap-2.23/Make.Rules 2014-01-05 01:23:01.000000000 -0500
|
---|
| 11 | @@ -45,8 +45,8 @@
|
---|
| 12 |
|
---|
| 13 | # Compilation specifics
|
---|
| 14 |
|
---|
| 15 | -KERNEL_HEADERS := $(topdir)/libcap/include
|
---|
| 16 | -IPATH += -fPIC -I$(topdir)/libcap/include -I$(KERNEL_HEADERS)
|
---|
| 17 | +KERNEL_HEADERS := $(topdir)/libcap/include/uapi
|
---|
| 18 | +IPATH += -fPIC -I$(KERNEL_HEADERS) -I$(topdir)/libcap/include
|
---|
| 19 |
|
---|
| 20 | CC := gcc
|
---|
| 21 | CFLAGS := -O2 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
|
---|
| 22 | diff -Naur libcap-2.23.orig/libcap/Makefile libcap-2.23/libcap/Makefile
|
---|
| 23 | --- libcap-2.23.orig/libcap/Makefile 2013-12-24 12:08:53.000000000 -0500
|
---|
| 24 | +++ libcap-2.23/libcap/Makefile 2014-01-05 01:23:01.000000000 -0500
|
---|
| 25 | @@ -53,7 +53,7 @@
|
---|
| 26 |
|
---|
| 27 | cap_names.list.h: Makefile $(KERNEL_HEADERS)/linux/capability.h
|
---|
| 28 | @echo "=> making $@ from $(KERNEL_HEADERS)/linux/capability.h"
|
---|
| 29 | - perl -e 'while ($$l=<>) { if ($$l =~ /^\#define[ \t](CAP[_A-Z]+)[ \t]+([0-9]+)\s+$$/) { $$tok=$$1; $$val=$$2; $$tok =~ tr/A-Z/a-z/; print "{\"$$tok\",$$val},\n"; } }' $(KERNEL_HEADERS)/uapi/linux/capability.h | fgrep -v 0x > $@
|
---|
| 30 | + perl -e 'while ($$l=<>) { if ($$l =~ /^\#define[ \t](CAP[_A-Z]+)[ \t]+([0-9]+)\s+$$/) { $$tok=$$1; $$val=$$2; $$tok =~ tr/A-Z/a-z/; print "{\"$$tok\",$$val},\n"; } }' $(KERNEL_HEADERS)/linux/capability.h | fgrep -v 0x > $@
|
---|
| 31 |
|
---|
| 32 | $(STALIBNAME): $(OBJS)
|
---|
| 33 | $(AR) rcs $@ $^
|
---|
| 34 | diff -Naur libcap-2.23.orig/libcap/include/linux/capability.h libcap-2.23/libcap/include/linux/capability.h
|
---|
| 35 | --- libcap-2.23.orig/libcap/include/linux/capability.h 2013-12-15 23:47:10.000000000 -0500
|
---|
| 36 | +++ libcap-2.23/libcap/include/linux/capability.h 1969-12-31 19:00:00.000000000 -0500
|
---|
| 37 | @@ -1,219 +0,0 @@
|
---|
| 38 | -/*
|
---|
| 39 | - * This is <linux/capability.h>
|
---|
| 40 | - *
|
---|
| 41 | - * Andrew G. Morgan <morgan@kernel.org>
|
---|
| 42 | - * Alexander Kjeldaas <astor@guardian.no>
|
---|
| 43 | - * with help from Aleph1, Roland Buresund and Andrew Main.
|
---|
| 44 | - *
|
---|
| 45 | - * See here for the libcap library ("POSIX draft" compliance):
|
---|
| 46 | - *
|
---|
| 47 | - * ftp://www.kernel.org/pub/linux/libs/security/linux-privs/kernel-2.6/
|
---|
| 48 | - */
|
---|
| 49 | -#ifndef _LINUX_CAPABILITY_H
|
---|
| 50 | -#define _LINUX_CAPABILITY_H
|
---|
| 51 | -
|
---|
| 52 | -#include <uapi/linux/capability.h>
|
---|
| 53 | -
|
---|
| 54 | -
|
---|
| 55 | -#define _KERNEL_CAPABILITY_VERSION _LINUX_CAPABILITY_VERSION_3
|
---|
| 56 | -#define _KERNEL_CAPABILITY_U32S _LINUX_CAPABILITY_U32S_3
|
---|
| 57 | -
|
---|
| 58 | -extern int file_caps_enabled;
|
---|
| 59 | -
|
---|
| 60 | -typedef struct kernel_cap_struct {
|
---|
| 61 | - __u32 cap[_KERNEL_CAPABILITY_U32S];
|
---|
| 62 | -} kernel_cap_t;
|
---|
| 63 | -
|
---|
| 64 | -/* exact same as vfs_cap_data but in cpu endian and always filled completely */
|
---|
| 65 | -struct cpu_vfs_cap_data {
|
---|
| 66 | - __u32 magic_etc;
|
---|
| 67 | - kernel_cap_t permitted;
|
---|
| 68 | - kernel_cap_t inheritable;
|
---|
| 69 | -};
|
---|
| 70 | -
|
---|
| 71 | -#define _USER_CAP_HEADER_SIZE (sizeof(struct __user_cap_header_struct))
|
---|
| 72 | -#define _KERNEL_CAP_T_SIZE (sizeof(kernel_cap_t))
|
---|
| 73 | -
|
---|
| 74 | -
|
---|
| 75 | -struct file;
|
---|
| 76 | -struct inode;
|
---|
| 77 | -struct dentry;
|
---|
| 78 | -struct user_namespace;
|
---|
| 79 | -
|
---|
| 80 | -struct user_namespace *current_user_ns(void);
|
---|
| 81 | -
|
---|
| 82 | -extern const kernel_cap_t __cap_empty_set;
|
---|
| 83 | -extern const kernel_cap_t __cap_init_eff_set;
|
---|
| 84 | -
|
---|
| 85 | -/*
|
---|
| 86 | - * Internal kernel functions only
|
---|
| 87 | - */
|
---|
| 88 | -
|
---|
| 89 | -#define CAP_FOR_EACH_U32(__capi) \
|
---|
| 90 | - for (__capi = 0; __capi < _KERNEL_CAPABILITY_U32S; ++__capi)
|
---|
| 91 | -
|
---|
| 92 | -/*
|
---|
| 93 | - * CAP_FS_MASK and CAP_NFSD_MASKS:
|
---|
| 94 | - *
|
---|
| 95 | - * The fs mask is all the privileges that fsuid==0 historically meant.
|
---|
| 96 | - * At one time in the past, that included CAP_MKNOD and CAP_LINUX_IMMUTABLE.
|
---|
| 97 | - *
|
---|
| 98 | - * It has never meant setting security.* and trusted.* xattrs.
|
---|
| 99 | - *
|
---|
| 100 | - * We could also define fsmask as follows:
|
---|
| 101 | - * 1. CAP_FS_MASK is the privilege to bypass all fs-related DAC permissions
|
---|
| 102 | - * 2. The security.* and trusted.* xattrs are fs-related MAC permissions
|
---|
| 103 | - */
|
---|
| 104 | -
|
---|
| 105 | -# define CAP_FS_MASK_B0 (CAP_TO_MASK(CAP_CHOWN) \
|
---|
| 106 | - | CAP_TO_MASK(CAP_MKNOD) \
|
---|
| 107 | - | CAP_TO_MASK(CAP_DAC_OVERRIDE) \
|
---|
| 108 | - | CAP_TO_MASK(CAP_DAC_READ_SEARCH) \
|
---|
| 109 | - | CAP_TO_MASK(CAP_FOWNER) \
|
---|
| 110 | - | CAP_TO_MASK(CAP_FSETID))
|
---|
| 111 | -
|
---|
| 112 | -# define CAP_FS_MASK_B1 (CAP_TO_MASK(CAP_MAC_OVERRIDE))
|
---|
| 113 | -
|
---|
| 114 | -#if _KERNEL_CAPABILITY_U32S != 2
|
---|
| 115 | -# error Fix up hand-coded capability macro initializers
|
---|
| 116 | -#else /* HAND-CODED capability initializers */
|
---|
| 117 | -
|
---|
| 118 | -# define CAP_EMPTY_SET ((kernel_cap_t){{ 0, 0 }})
|
---|
| 119 | -# define CAP_FULL_SET ((kernel_cap_t){{ ~0, ~0 }})
|
---|
| 120 | -# define CAP_FS_SET ((kernel_cap_t){{ CAP_FS_MASK_B0 \
|
---|
| 121 | - | CAP_TO_MASK(CAP_LINUX_IMMUTABLE), \
|
---|
| 122 | - CAP_FS_MASK_B1 } })
|
---|
| 123 | -# define CAP_NFSD_SET ((kernel_cap_t){{ CAP_FS_MASK_B0 \
|
---|
| 124 | - | CAP_TO_MASK(CAP_SYS_RESOURCE), \
|
---|
| 125 | - CAP_FS_MASK_B1 } })
|
---|
| 126 | -
|
---|
| 127 | -#endif /* _KERNEL_CAPABILITY_U32S != 2 */
|
---|
| 128 | -
|
---|
| 129 | -# define cap_clear(c) do { (c) = __cap_empty_set; } while (0)
|
---|
| 130 | -
|
---|
| 131 | -#define cap_raise(c, flag) ((c).cap[CAP_TO_INDEX(flag)] |= CAP_TO_MASK(flag))
|
---|
| 132 | -#define cap_lower(c, flag) ((c).cap[CAP_TO_INDEX(flag)] &= ~CAP_TO_MASK(flag))
|
---|
| 133 | -#define cap_raised(c, flag) ((c).cap[CAP_TO_INDEX(flag)] & CAP_TO_MASK(flag))
|
---|
| 134 | -
|
---|
| 135 | -#define CAP_BOP_ALL(c, a, b, OP) \
|
---|
| 136 | -do { \
|
---|
| 137 | - unsigned __capi; \
|
---|
| 138 | - CAP_FOR_EACH_U32(__capi) { \
|
---|
| 139 | - c.cap[__capi] = a.cap[__capi] OP b.cap[__capi]; \
|
---|
| 140 | - } \
|
---|
| 141 | -} while (0)
|
---|
| 142 | -
|
---|
| 143 | -#define CAP_UOP_ALL(c, a, OP) \
|
---|
| 144 | -do { \
|
---|
| 145 | - unsigned __capi; \
|
---|
| 146 | - CAP_FOR_EACH_U32(__capi) { \
|
---|
| 147 | - c.cap[__capi] = OP a.cap[__capi]; \
|
---|
| 148 | - } \
|
---|
| 149 | -} while (0)
|
---|
| 150 | -
|
---|
| 151 | -static inline kernel_cap_t cap_combine(const kernel_cap_t a,
|
---|
| 152 | - const kernel_cap_t b)
|
---|
| 153 | -{
|
---|
| 154 | - kernel_cap_t dest;
|
---|
| 155 | - CAP_BOP_ALL(dest, a, b, |);
|
---|
| 156 | - return dest;
|
---|
| 157 | -}
|
---|
| 158 | -
|
---|
| 159 | -static inline kernel_cap_t cap_intersect(const kernel_cap_t a,
|
---|
| 160 | - const kernel_cap_t b)
|
---|
| 161 | -{
|
---|
| 162 | - kernel_cap_t dest;
|
---|
| 163 | - CAP_BOP_ALL(dest, a, b, &);
|
---|
| 164 | - return dest;
|
---|
| 165 | -}
|
---|
| 166 | -
|
---|
| 167 | -static inline kernel_cap_t cap_drop(const kernel_cap_t a,
|
---|
| 168 | - const kernel_cap_t drop)
|
---|
| 169 | -{
|
---|
| 170 | - kernel_cap_t dest;
|
---|
| 171 | - CAP_BOP_ALL(dest, a, drop, &~);
|
---|
| 172 | - return dest;
|
---|
| 173 | -}
|
---|
| 174 | -
|
---|
| 175 | -static inline kernel_cap_t cap_invert(const kernel_cap_t c)
|
---|
| 176 | -{
|
---|
| 177 | - kernel_cap_t dest;
|
---|
| 178 | - CAP_UOP_ALL(dest, c, ~);
|
---|
| 179 | - return dest;
|
---|
| 180 | -}
|
---|
| 181 | -
|
---|
| 182 | -static inline int cap_isclear(const kernel_cap_t a)
|
---|
| 183 | -{
|
---|
| 184 | - unsigned __capi;
|
---|
| 185 | - CAP_FOR_EACH_U32(__capi) {
|
---|
| 186 | - if (a.cap[__capi] != 0)
|
---|
| 187 | - return 0;
|
---|
| 188 | - }
|
---|
| 189 | - return 1;
|
---|
| 190 | -}
|
---|
| 191 | -
|
---|
| 192 | -/*
|
---|
| 193 | - * Check if "a" is a subset of "set".
|
---|
| 194 | - * return 1 if ALL of the capabilities in "a" are also in "set"
|
---|
| 195 | - * cap_issubset(0101, 1111) will return 1
|
---|
| 196 | - * return 0 if ANY of the capabilities in "a" are not in "set"
|
---|
| 197 | - * cap_issubset(1111, 0101) will return 0
|
---|
| 198 | - */
|
---|
| 199 | -static inline int cap_issubset(const kernel_cap_t a, const kernel_cap_t set)
|
---|
| 200 | -{
|
---|
| 201 | - kernel_cap_t dest;
|
---|
| 202 | - dest = cap_drop(a, set);
|
---|
| 203 | - return cap_isclear(dest);
|
---|
| 204 | -}
|
---|
| 205 | -
|
---|
| 206 | -/* Used to decide between falling back on the old suser() or fsuser(). */
|
---|
| 207 | -
|
---|
| 208 | -static inline int cap_is_fs_cap(int cap)
|
---|
| 209 | -{
|
---|
| 210 | - const kernel_cap_t __cap_fs_set = CAP_FS_SET;
|
---|
| 211 | - return !!(CAP_TO_MASK(cap) & __cap_fs_set.cap[CAP_TO_INDEX(cap)]);
|
---|
| 212 | -}
|
---|
| 213 | -
|
---|
| 214 | -static inline kernel_cap_t cap_drop_fs_set(const kernel_cap_t a)
|
---|
| 215 | -{
|
---|
| 216 | - const kernel_cap_t __cap_fs_set = CAP_FS_SET;
|
---|
| 217 | - return cap_drop(a, __cap_fs_set);
|
---|
| 218 | -}
|
---|
| 219 | -
|
---|
| 220 | -static inline kernel_cap_t cap_raise_fs_set(const kernel_cap_t a,
|
---|
| 221 | - const kernel_cap_t permitted)
|
---|
| 222 | -{
|
---|
| 223 | - const kernel_cap_t __cap_fs_set = CAP_FS_SET;
|
---|
| 224 | - return cap_combine(a,
|
---|
| 225 | - cap_intersect(permitted, __cap_fs_set));
|
---|
| 226 | -}
|
---|
| 227 | -
|
---|
| 228 | -static inline kernel_cap_t cap_drop_nfsd_set(const kernel_cap_t a)
|
---|
| 229 | -{
|
---|
| 230 | - const kernel_cap_t __cap_fs_set = CAP_NFSD_SET;
|
---|
| 231 | - return cap_drop(a, __cap_fs_set);
|
---|
| 232 | -}
|
---|
| 233 | -
|
---|
| 234 | -static inline kernel_cap_t cap_raise_nfsd_set(const kernel_cap_t a,
|
---|
| 235 | - const kernel_cap_t permitted)
|
---|
| 236 | -{
|
---|
| 237 | - const kernel_cap_t __cap_nfsd_set = CAP_NFSD_SET;
|
---|
| 238 | - return cap_combine(a,
|
---|
| 239 | - cap_intersect(permitted, __cap_nfsd_set));
|
---|
| 240 | -}
|
---|
| 241 | -
|
---|
| 242 | -extern bool has_capability(struct task_struct *t, int cap);
|
---|
| 243 | -extern bool has_ns_capability(struct task_struct *t,
|
---|
| 244 | - struct user_namespace *ns, int cap);
|
---|
| 245 | -extern bool has_capability_noaudit(struct task_struct *t, int cap);
|
---|
| 246 | -extern bool has_ns_capability_noaudit(struct task_struct *t,
|
---|
| 247 | - struct user_namespace *ns, int cap);
|
---|
| 248 | -extern bool capable(int cap);
|
---|
| 249 | -extern bool ns_capable(struct user_namespace *ns, int cap);
|
---|
| 250 | -extern bool inode_capable(const struct inode *inode, int cap);
|
---|
| 251 | -extern bool file_ns_capable(const struct file *file, struct user_namespace *ns, int cap);
|
---|
| 252 | -
|
---|
| 253 | -/* audit system wants to get cap info from files as well */
|
---|
| 254 | -extern int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data *cpu_caps);
|
---|
| 255 | -
|
---|
| 256 | -#endif /* !_LINUX_CAPABILITY_H */
|
---|
| 257 | diff -Naur libcap-2.23.orig/libcap/include/linux/prctl.h libcap-2.23/libcap/include/linux/prctl.h
|
---|
| 258 | --- libcap-2.23.orig/libcap/include/linux/prctl.h 2013-12-15 23:46:28.000000000 -0500
|
---|
| 259 | +++ libcap-2.23/libcap/include/linux/prctl.h 1969-12-31 19:00:00.000000000 -0500
|
---|
| 260 | @@ -1,105 +0,0 @@
|
---|
| 261 | -#ifndef _LINUX_PRCTL_H
|
---|
| 262 | -#define _LINUX_PRCTL_H
|
---|
| 263 | -
|
---|
| 264 | -/* Values to pass as first argument to prctl() */
|
---|
| 265 | -
|
---|
| 266 | -#define PR_SET_PDEATHSIG 1 /* Second arg is a signal */
|
---|
| 267 | -#define PR_GET_PDEATHSIG 2 /* Second arg is a ptr to return the signal */
|
---|
| 268 | -
|
---|
| 269 | -/* Get/set current->mm->dumpable */
|
---|
| 270 | -#define PR_GET_DUMPABLE 3
|
---|
| 271 | -#define PR_SET_DUMPABLE 4
|
---|
| 272 | -
|
---|
| 273 | -/* Get/set unaligned access control bits (if meaningful) */
|
---|
| 274 | -#define PR_GET_UNALIGN 5
|
---|
| 275 | -#define PR_SET_UNALIGN 6
|
---|
| 276 | -# define PR_UNALIGN_NOPRINT 1 /* silently fix up unaligned user accesses */
|
---|
| 277 | -# define PR_UNALIGN_SIGBUS 2 /* generate SIGBUS on unaligned user access */
|
---|
| 278 | -
|
---|
| 279 | -/* Get/set whether or not to drop capabilities on setuid() away from
|
---|
| 280 | - * uid 0 (as per security/commoncap.c) */
|
---|
| 281 | -#define PR_GET_KEEPCAPS 7
|
---|
| 282 | -#define PR_SET_KEEPCAPS 8
|
---|
| 283 | -
|
---|
| 284 | -/* Get/set floating-point emulation control bits (if meaningful) */
|
---|
| 285 | -#define PR_GET_FPEMU 9
|
---|
| 286 | -#define PR_SET_FPEMU 10
|
---|
| 287 | -# define PR_FPEMU_NOPRINT 1 /* silently emulate fp operations accesses */
|
---|
| 288 | -# define PR_FPEMU_SIGFPE 2 /* don't emulate fp operations, send SIGFPE instead */
|
---|
| 289 | -
|
---|
| 290 | -/* Get/set floating-point exception mode (if meaningful) */
|
---|
| 291 | -#define PR_GET_FPEXC 11
|
---|
| 292 | -#define PR_SET_FPEXC 12
|
---|
| 293 | -# define PR_FP_EXC_SW_ENABLE 0x80 /* Use FPEXC for FP exception enables */
|
---|
| 294 | -# define PR_FP_EXC_DIV 0x010000 /* floating point divide by zero */
|
---|
| 295 | -# define PR_FP_EXC_OVF 0x020000 /* floating point overflow */
|
---|
| 296 | -# define PR_FP_EXC_UND 0x040000 /* floating point underflow */
|
---|
| 297 | -# define PR_FP_EXC_RES 0x080000 /* floating point inexact result */
|
---|
| 298 | -# define PR_FP_EXC_INV 0x100000 /* floating point invalid operation */
|
---|
| 299 | -# define PR_FP_EXC_DISABLED 0 /* FP exceptions disabled */
|
---|
| 300 | -# define PR_FP_EXC_NONRECOV 1 /* async non-recoverable exc. mode */
|
---|
| 301 | -# define PR_FP_EXC_ASYNC 2 /* async recoverable exception mode */
|
---|
| 302 | -# define PR_FP_EXC_PRECISE 3 /* precise exception mode */
|
---|
| 303 | -
|
---|
| 304 | -/* Get/set whether we use statistical process timing or accurate timestamp
|
---|
| 305 | - * based process timing */
|
---|
| 306 | -#define PR_GET_TIMING 13
|
---|
| 307 | -#define PR_SET_TIMING 14
|
---|
| 308 | -# define PR_TIMING_STATISTICAL 0 /* Normal, traditional,
|
---|
| 309 | - statistical process timing */
|
---|
| 310 | -# define PR_TIMING_TIMESTAMP 1 /* Accurate timestamp based
|
---|
| 311 | - process timing */
|
---|
| 312 | -
|
---|
| 313 | -#define PR_SET_NAME 15 /* Set process name */
|
---|
| 314 | -#define PR_GET_NAME 16 /* Get process name */
|
---|
| 315 | -
|
---|
| 316 | -/* Get/set process endian */
|
---|
| 317 | -#define PR_GET_ENDIAN 19
|
---|
| 318 | -#define PR_SET_ENDIAN 20
|
---|
| 319 | -# define PR_ENDIAN_BIG 0
|
---|
| 320 | -# define PR_ENDIAN_LITTLE 1 /* True little endian mode */
|
---|
| 321 | -# define PR_ENDIAN_PPC_LITTLE 2 /* "PowerPC" pseudo little endian */
|
---|
| 322 | -
|
---|
| 323 | -/* Get/set process seccomp mode */
|
---|
| 324 | -#define PR_GET_SECCOMP 21
|
---|
| 325 | -#define PR_SET_SECCOMP 22
|
---|
| 326 | -
|
---|
| 327 | -/* Get/set the capability bounding set (as per security/commoncap.c) */
|
---|
| 328 | -#define PR_CAPBSET_READ 23
|
---|
| 329 | -#define PR_CAPBSET_DROP 24
|
---|
| 330 | -
|
---|
| 331 | -/* Get/set the process' ability to use the timestamp counter instruction */
|
---|
| 332 | -#define PR_GET_TSC 25
|
---|
| 333 | -#define PR_SET_TSC 26
|
---|
| 334 | -# define PR_TSC_ENABLE 1 /* allow the use of the timestamp counter */
|
---|
| 335 | -# define PR_TSC_SIGSEGV 2 /* throw a SIGSEGV instead of reading the TSC */
|
---|
| 336 | -
|
---|
| 337 | -/* Get/set securebits (as per security/commoncap.c) */
|
---|
| 338 | -#define PR_GET_SECUREBITS 27
|
---|
| 339 | -#define PR_SET_SECUREBITS 28
|
---|
| 340 | -
|
---|
| 341 | -/*
|
---|
| 342 | - * Get/set the timerslack as used by poll/select/nanosleep
|
---|
| 343 | - * A value of 0 means "use default"
|
---|
| 344 | - */
|
---|
| 345 | -#define PR_SET_TIMERSLACK 29
|
---|
| 346 | -#define PR_GET_TIMERSLACK 30
|
---|
| 347 | -
|
---|
| 348 | -#define PR_TASK_PERF_EVENTS_DISABLE 31
|
---|
| 349 | -#define PR_TASK_PERF_EVENTS_ENABLE 32
|
---|
| 350 | -
|
---|
| 351 | -/*
|
---|
| 352 | - * Set early/late kill mode for hwpoison memory corruption.
|
---|
| 353 | - * This influences when the process gets killed on a memory corruption.
|
---|
| 354 | - */
|
---|
| 355 | -#define PR_MCE_KILL 33
|
---|
| 356 | -# define PR_MCE_KILL_CLEAR 0
|
---|
| 357 | -# define PR_MCE_KILL_SET 1
|
---|
| 358 | -
|
---|
| 359 | -# define PR_MCE_KILL_LATE 0
|
---|
| 360 | -# define PR_MCE_KILL_EARLY 1
|
---|
| 361 | -# define PR_MCE_KILL_DEFAULT 2
|
---|
| 362 | -
|
---|
| 363 | -#define PR_MCE_KILL_GET 34
|
---|
| 364 | -
|
---|
| 365 | -#endif /* _LINUX_PRCTL_H */
|
---|
| 366 | diff -Naur libcap-2.23.orig/libcap/include/linux/securebits.h libcap-2.23/libcap/include/linux/securebits.h
|
---|
| 367 | --- libcap-2.23.orig/libcap/include/linux/securebits.h 2013-12-15 23:46:28.000000000 -0500
|
---|
| 368 | +++ libcap-2.23/libcap/include/linux/securebits.h 1969-12-31 19:00:00.000000000 -0500
|
---|
| 369 | @@ -1,54 +0,0 @@
|
---|
| 370 | -#ifndef _LINUX_SECUREBITS_H
|
---|
| 371 | -#define _LINUX_SECUREBITS_H 1
|
---|
| 372 | -
|
---|
| 373 | -/* Each securesetting is implemented using two bits. One bit specifies
|
---|
| 374 | - whether the setting is on or off. The other bit specify whether the
|
---|
| 375 | - setting is locked or not. A setting which is locked cannot be
|
---|
| 376 | - changed from user-level. */
|
---|
| 377 | -#define issecure_mask(X) (1 << (X))
|
---|
| 378 | -#ifdef __KERNEL__
|
---|
| 379 | -#define issecure(X) (issecure_mask(X) & current_cred_xxx(securebits))
|
---|
| 380 | -#endif
|
---|
| 381 | -
|
---|
| 382 | -#define SECUREBITS_DEFAULT 0x00000000
|
---|
| 383 | -
|
---|
| 384 | -/* When set UID 0 has no special privileges. When unset, we support
|
---|
| 385 | - inheritance of root-permissions and suid-root executable under
|
---|
| 386 | - compatibility mode. We raise the effective and inheritable bitmasks
|
---|
| 387 | - *of the executable file* if the effective uid of the new process is
|
---|
| 388 | - 0. If the real uid is 0, we raise the effective (legacy) bit of the
|
---|
| 389 | - executable file. */
|
---|
| 390 | -#define SECURE_NOROOT 0
|
---|
| 391 | -#define SECURE_NOROOT_LOCKED 1 /* make bit-0 immutable */
|
---|
| 392 | -
|
---|
| 393 | -#define SECBIT_NOROOT (issecure_mask(SECURE_NOROOT))
|
---|
| 394 | -#define SECBIT_NOROOT_LOCKED (issecure_mask(SECURE_NOROOT_LOCKED))
|
---|
| 395 | -
|
---|
| 396 | -/* When set, setuid to/from uid 0 does not trigger capability-"fixup".
|
---|
| 397 | - When unset, to provide compatiblility with old programs relying on
|
---|
| 398 | - set*uid to gain/lose privilege, transitions to/from uid 0 cause
|
---|
| 399 | - capabilities to be gained/lost. */
|
---|
| 400 | -#define SECURE_NO_SETUID_FIXUP 2
|
---|
| 401 | -#define SECURE_NO_SETUID_FIXUP_LOCKED 3 /* make bit-2 immutable */
|
---|
| 402 | -
|
---|
| 403 | -#define SECBIT_NO_SETUID_FIXUP (issecure_mask(SECURE_NO_SETUID_FIXUP))
|
---|
| 404 | -#define SECBIT_NO_SETUID_FIXUP_LOCKED \
|
---|
| 405 | - (issecure_mask(SECURE_NO_SETUID_FIXUP_LOCKED))
|
---|
| 406 | -
|
---|
| 407 | -/* When set, a process can retain its capabilities even after
|
---|
| 408 | - transitioning to a non-root user (the set-uid fixup suppressed by
|
---|
| 409 | - bit 2). Bit-4 is cleared when a process calls exec(); setting both
|
---|
| 410 | - bit 4 and 5 will create a barrier through exec that no exec()'d
|
---|
| 411 | - child can use this feature again. */
|
---|
| 412 | -#define SECURE_KEEP_CAPS 4
|
---|
| 413 | -#define SECURE_KEEP_CAPS_LOCKED 5 /* make bit-4 immutable */
|
---|
| 414 | -
|
---|
| 415 | -#define SECBIT_KEEP_CAPS (issecure_mask(SECURE_KEEP_CAPS))
|
---|
| 416 | -#define SECBIT_KEEP_CAPS_LOCKED (issecure_mask(SECURE_KEEP_CAPS_LOCKED))
|
---|
| 417 | -
|
---|
| 418 | -#define SECURE_ALL_BITS (issecure_mask(SECURE_NOROOT) | \
|
---|
| 419 | - issecure_mask(SECURE_NO_SETUID_FIXUP) | \
|
---|
| 420 | - issecure_mask(SECURE_KEEP_CAPS))
|
---|
| 421 | -#define SECURE_ALL_LOCKS (SECURE_ALL_BITS << 1)
|
---|
| 422 | -
|
---|
| 423 | -#endif /* !_LINUX_SECUREBITS_H */
|
---|
| 424 | diff -Naur libcap-2.23.orig/libcap/include/sys/capability.h libcap-2.23/libcap/include/sys/capability.h
|
---|
| 425 | --- libcap-2.23.orig/libcap/include/sys/capability.h 2013-12-15 23:47:10.000000000 -0500
|
---|
| 426 | +++ libcap-2.23/libcap/include/sys/capability.h 2014-01-05 01:23:01.000000000 -0500
|
---|
| 427 | @@ -26,7 +26,7 @@
|
---|
| 428 | #ifndef __user
|
---|
| 429 | #define __user
|
---|
| 430 | #endif
|
---|
| 431 | -#include <uapi/linux/capability.h>
|
---|
| 432 | +#include <linux/capability.h>
|
---|
| 433 | #include <linux/xattr.h>
|
---|
| 434 |
|
---|
| 435 | /*
|
---|
| 436 | diff -Naur libcap-2.23.orig/libcap/include/uapi/linux/prctl.h libcap-2.23/libcap/include/uapi/linux/prctl.h
|
---|
| 437 | --- libcap-2.23.orig/libcap/include/uapi/linux/prctl.h 1969-12-31 19:00:00.000000000 -0500
|
---|
| 438 | +++ libcap-2.23/libcap/include/uapi/linux/prctl.h 2014-01-05 01:23:01.000000000 -0500
|
---|
| 439 | @@ -0,0 +1,152 @@
|
---|
| 440 | +#ifndef _LINUX_PRCTL_H
|
---|
| 441 | +#define _LINUX_PRCTL_H
|
---|
| 442 | +
|
---|
| 443 | +/* Values to pass as first argument to prctl() */
|
---|
| 444 | +
|
---|
| 445 | +#define PR_SET_PDEATHSIG 1 /* Second arg is a signal */
|
---|
| 446 | +#define PR_GET_PDEATHSIG 2 /* Second arg is a ptr to return the signal */
|
---|
| 447 | +
|
---|
| 448 | +/* Get/set current->mm->dumpable */
|
---|
| 449 | +#define PR_GET_DUMPABLE 3
|
---|
| 450 | +#define PR_SET_DUMPABLE 4
|
---|
| 451 | +
|
---|
| 452 | +/* Get/set unaligned access control bits (if meaningful) */
|
---|
| 453 | +#define PR_GET_UNALIGN 5
|
---|
| 454 | +#define PR_SET_UNALIGN 6
|
---|
| 455 | +# define PR_UNALIGN_NOPRINT 1 /* silently fix up unaligned user accesses */
|
---|
| 456 | +# define PR_UNALIGN_SIGBUS 2 /* generate SIGBUS on unaligned user access */
|
---|
| 457 | +
|
---|
| 458 | +/* Get/set whether or not to drop capabilities on setuid() away from
|
---|
| 459 | + * uid 0 (as per security/commoncap.c) */
|
---|
| 460 | +#define PR_GET_KEEPCAPS 7
|
---|
| 461 | +#define PR_SET_KEEPCAPS 8
|
---|
| 462 | +
|
---|
| 463 | +/* Get/set floating-point emulation control bits (if meaningful) */
|
---|
| 464 | +#define PR_GET_FPEMU 9
|
---|
| 465 | +#define PR_SET_FPEMU 10
|
---|
| 466 | +# define PR_FPEMU_NOPRINT 1 /* silently emulate fp operations accesses */
|
---|
| 467 | +# define PR_FPEMU_SIGFPE 2 /* don't emulate fp operations, send SIGFPE instead */
|
---|
| 468 | +
|
---|
| 469 | +/* Get/set floating-point exception mode (if meaningful) */
|
---|
| 470 | +#define PR_GET_FPEXC 11
|
---|
| 471 | +#define PR_SET_FPEXC 12
|
---|
| 472 | +# define PR_FP_EXC_SW_ENABLE 0x80 /* Use FPEXC for FP exception enables */
|
---|
| 473 | +# define PR_FP_EXC_DIV 0x010000 /* floating point divide by zero */
|
---|
| 474 | +# define PR_FP_EXC_OVF 0x020000 /* floating point overflow */
|
---|
| 475 | +# define PR_FP_EXC_UND 0x040000 /* floating point underflow */
|
---|
| 476 | +# define PR_FP_EXC_RES 0x080000 /* floating point inexact result */
|
---|
| 477 | +# define PR_FP_EXC_INV 0x100000 /* floating point invalid operation */
|
---|
| 478 | +# define PR_FP_EXC_DISABLED 0 /* FP exceptions disabled */
|
---|
| 479 | +# define PR_FP_EXC_NONRECOV 1 /* async non-recoverable exc. mode */
|
---|
| 480 | +# define PR_FP_EXC_ASYNC 2 /* async recoverable exception mode */
|
---|
| 481 | +# define PR_FP_EXC_PRECISE 3 /* precise exception mode */
|
---|
| 482 | +
|
---|
| 483 | +/* Get/set whether we use statistical process timing or accurate timestamp
|
---|
| 484 | + * based process timing */
|
---|
| 485 | +#define PR_GET_TIMING 13
|
---|
| 486 | +#define PR_SET_TIMING 14
|
---|
| 487 | +# define PR_TIMING_STATISTICAL 0 /* Normal, traditional,
|
---|
| 488 | + statistical process timing */
|
---|
| 489 | +# define PR_TIMING_TIMESTAMP 1 /* Accurate timestamp based
|
---|
| 490 | + process timing */
|
---|
| 491 | +
|
---|
| 492 | +#define PR_SET_NAME 15 /* Set process name */
|
---|
| 493 | +#define PR_GET_NAME 16 /* Get process name */
|
---|
| 494 | +
|
---|
| 495 | +/* Get/set process endian */
|
---|
| 496 | +#define PR_GET_ENDIAN 19
|
---|
| 497 | +#define PR_SET_ENDIAN 20
|
---|
| 498 | +# define PR_ENDIAN_BIG 0
|
---|
| 499 | +# define PR_ENDIAN_LITTLE 1 /* True little endian mode */
|
---|
| 500 | +# define PR_ENDIAN_PPC_LITTLE 2 /* "PowerPC" pseudo little endian */
|
---|
| 501 | +
|
---|
| 502 | +/* Get/set process seccomp mode */
|
---|
| 503 | +#define PR_GET_SECCOMP 21
|
---|
| 504 | +#define PR_SET_SECCOMP 22
|
---|
| 505 | +
|
---|
| 506 | +/* Get/set the capability bounding set (as per security/commoncap.c) */
|
---|
| 507 | +#define PR_CAPBSET_READ 23
|
---|
| 508 | +#define PR_CAPBSET_DROP 24
|
---|
| 509 | +
|
---|
| 510 | +/* Get/set the process' ability to use the timestamp counter instruction */
|
---|
| 511 | +#define PR_GET_TSC 25
|
---|
| 512 | +#define PR_SET_TSC 26
|
---|
| 513 | +# define PR_TSC_ENABLE 1 /* allow the use of the timestamp counter */
|
---|
| 514 | +# define PR_TSC_SIGSEGV 2 /* throw a SIGSEGV instead of reading the TSC */
|
---|
| 515 | +
|
---|
| 516 | +/* Get/set securebits (as per security/commoncap.c) */
|
---|
| 517 | +#define PR_GET_SECUREBITS 27
|
---|
| 518 | +#define PR_SET_SECUREBITS 28
|
---|
| 519 | +
|
---|
| 520 | +/*
|
---|
| 521 | + * Get/set the timerslack as used by poll/select/nanosleep
|
---|
| 522 | + * A value of 0 means "use default"
|
---|
| 523 | + */
|
---|
| 524 | +#define PR_SET_TIMERSLACK 29
|
---|
| 525 | +#define PR_GET_TIMERSLACK 30
|
---|
| 526 | +
|
---|
| 527 | +#define PR_TASK_PERF_EVENTS_DISABLE 31
|
---|
| 528 | +#define PR_TASK_PERF_EVENTS_ENABLE 32
|
---|
| 529 | +
|
---|
| 530 | +/*
|
---|
| 531 | + * Set early/late kill mode for hwpoison memory corruption.
|
---|
| 532 | + * This influences when the process gets killed on a memory corruption.
|
---|
| 533 | + */
|
---|
| 534 | +#define PR_MCE_KILL 33
|
---|
| 535 | +# define PR_MCE_KILL_CLEAR 0
|
---|
| 536 | +# define PR_MCE_KILL_SET 1
|
---|
| 537 | +
|
---|
| 538 | +# define PR_MCE_KILL_LATE 0
|
---|
| 539 | +# define PR_MCE_KILL_EARLY 1
|
---|
| 540 | +# define PR_MCE_KILL_DEFAULT 2
|
---|
| 541 | +
|
---|
| 542 | +#define PR_MCE_KILL_GET 34
|
---|
| 543 | +
|
---|
| 544 | +/*
|
---|
| 545 | + * Tune up process memory map specifics.
|
---|
| 546 | + */
|
---|
| 547 | +#define PR_SET_MM 35
|
---|
| 548 | +# define PR_SET_MM_START_CODE 1
|
---|
| 549 | +# define PR_SET_MM_END_CODE 2
|
---|
| 550 | +# define PR_SET_MM_START_DATA 3
|
---|
| 551 | +# define PR_SET_MM_END_DATA 4
|
---|
| 552 | +# define PR_SET_MM_START_STACK 5
|
---|
| 553 | +# define PR_SET_MM_START_BRK 6
|
---|
| 554 | +# define PR_SET_MM_BRK 7
|
---|
| 555 | +# define PR_SET_MM_ARG_START 8
|
---|
| 556 | +# define PR_SET_MM_ARG_END 9
|
---|
| 557 | +# define PR_SET_MM_ENV_START 10
|
---|
| 558 | +# define PR_SET_MM_ENV_END 11
|
---|
| 559 | +# define PR_SET_MM_AUXV 12
|
---|
| 560 | +# define PR_SET_MM_EXE_FILE 13
|
---|
| 561 | +
|
---|
| 562 | +/*
|
---|
| 563 | + * Set specific pid that is allowed to ptrace the current task.
|
---|
| 564 | + * A value of 0 mean "no process".
|
---|
| 565 | + */
|
---|
| 566 | +#define PR_SET_PTRACER 0x59616d61
|
---|
| 567 | +# define PR_SET_PTRACER_ANY ((unsigned long)-1)
|
---|
| 568 | +
|
---|
| 569 | +#define PR_SET_CHILD_SUBREAPER 36
|
---|
| 570 | +#define PR_GET_CHILD_SUBREAPER 37
|
---|
| 571 | +
|
---|
| 572 | +/*
|
---|
| 573 | + * If no_new_privs is set, then operations that grant new privileges (i.e.
|
---|
| 574 | + * execve) will either fail or not grant them. This affects suid/sgid,
|
---|
| 575 | + * file capabilities, and LSMs.
|
---|
| 576 | + *
|
---|
| 577 | + * Operations that merely manipulate or drop existing privileges (setresuid,
|
---|
| 578 | + * capset, etc.) will still work. Drop those privileges if you want them gone.
|
---|
| 579 | + *
|
---|
| 580 | + * Changing LSM security domain is considered a new privilege. So, for example,
|
---|
| 581 | + * asking selinux for a specific new context (e.g. with runcon) will result
|
---|
| 582 | + * in execve returning -EPERM.
|
---|
| 583 | + *
|
---|
| 584 | + * See Documentation/prctl/no_new_privs.txt for more details.
|
---|
| 585 | + */
|
---|
| 586 | +#define PR_SET_NO_NEW_PRIVS 38
|
---|
| 587 | +#define PR_GET_NO_NEW_PRIVS 39
|
---|
| 588 | +
|
---|
| 589 | +#define PR_GET_TID_ADDRESS 40
|
---|
| 590 | +
|
---|
| 591 | +#endif /* _LINUX_PRCTL_H */
|
---|
| 592 | diff -Naur libcap-2.23.orig/libcap/include/uapi/linux/securebits.h libcap-2.23/libcap/include/uapi/linux/securebits.h
|
---|
| 593 | --- libcap-2.23.orig/libcap/include/uapi/linux/securebits.h 1969-12-31 19:00:00.000000000 -0500
|
---|
| 594 | +++ libcap-2.23/libcap/include/uapi/linux/securebits.h 2014-01-05 01:23:01.000000000 -0500
|
---|
| 595 | @@ -0,0 +1,51 @@
|
---|
| 596 | +#ifndef _UAPI_LINUX_SECUREBITS_H
|
---|
| 597 | +#define _UAPI_LINUX_SECUREBITS_H
|
---|
| 598 | +
|
---|
| 599 | +/* Each securesetting is implemented using two bits. One bit specifies
|
---|
| 600 | + whether the setting is on or off. The other bit specify whether the
|
---|
| 601 | + setting is locked or not. A setting which is locked cannot be
|
---|
| 602 | + changed from user-level. */
|
---|
| 603 | +#define issecure_mask(X) (1 << (X))
|
---|
| 604 | +
|
---|
| 605 | +#define SECUREBITS_DEFAULT 0x00000000
|
---|
| 606 | +
|
---|
| 607 | +/* When set UID 0 has no special privileges. When unset, we support
|
---|
| 608 | + inheritance of root-permissions and suid-root executable under
|
---|
| 609 | + compatibility mode. We raise the effective and inheritable bitmasks
|
---|
| 610 | + *of the executable file* if the effective uid of the new process is
|
---|
| 611 | + 0. If the real uid is 0, we raise the effective (legacy) bit of the
|
---|
| 612 | + executable file. */
|
---|
| 613 | +#define SECURE_NOROOT 0
|
---|
| 614 | +#define SECURE_NOROOT_LOCKED 1 /* make bit-0 immutable */
|
---|
| 615 | +
|
---|
| 616 | +#define SECBIT_NOROOT (issecure_mask(SECURE_NOROOT))
|
---|
| 617 | +#define SECBIT_NOROOT_LOCKED (issecure_mask(SECURE_NOROOT_LOCKED))
|
---|
| 618 | +
|
---|
| 619 | +/* When set, setuid to/from uid 0 does not trigger capability-"fixup".
|
---|
| 620 | + When unset, to provide compatiblility with old programs relying on
|
---|
| 621 | + set*uid to gain/lose privilege, transitions to/from uid 0 cause
|
---|
| 622 | + capabilities to be gained/lost. */
|
---|
| 623 | +#define SECURE_NO_SETUID_FIXUP 2
|
---|
| 624 | +#define SECURE_NO_SETUID_FIXUP_LOCKED 3 /* make bit-2 immutable */
|
---|
| 625 | +
|
---|
| 626 | +#define SECBIT_NO_SETUID_FIXUP (issecure_mask(SECURE_NO_SETUID_FIXUP))
|
---|
| 627 | +#define SECBIT_NO_SETUID_FIXUP_LOCKED \
|
---|
| 628 | + (issecure_mask(SECURE_NO_SETUID_FIXUP_LOCKED))
|
---|
| 629 | +
|
---|
| 630 | +/* When set, a process can retain its capabilities even after
|
---|
| 631 | + transitioning to a non-root user (the set-uid fixup suppressed by
|
---|
| 632 | + bit 2). Bit-4 is cleared when a process calls exec(); setting both
|
---|
| 633 | + bit 4 and 5 will create a barrier through exec that no exec()'d
|
---|
| 634 | + child can use this feature again. */
|
---|
| 635 | +#define SECURE_KEEP_CAPS 4
|
---|
| 636 | +#define SECURE_KEEP_CAPS_LOCKED 5 /* make bit-4 immutable */
|
---|
| 637 | +
|
---|
| 638 | +#define SECBIT_KEEP_CAPS (issecure_mask(SECURE_KEEP_CAPS))
|
---|
| 639 | +#define SECBIT_KEEP_CAPS_LOCKED (issecure_mask(SECURE_KEEP_CAPS_LOCKED))
|
---|
| 640 | +
|
---|
| 641 | +#define SECURE_ALL_BITS (issecure_mask(SECURE_NOROOT) | \
|
---|
| 642 | + issecure_mask(SECURE_NO_SETUID_FIXUP) | \
|
---|
| 643 | + issecure_mask(SECURE_KEEP_CAPS))
|
---|
| 644 | +#define SECURE_ALL_LOCKS (SECURE_ALL_BITS << 1)
|
---|
| 645 | +
|
---|
| 646 | +#endif /* _UAPI_LINUX_SECUREBITS_H */
|
---|