Lines Matching full:new

262  * @new: The proposed new credentials; alterations should be made here
264 * @effective: A pointer to the proposed new effective capabilities set
265 * @inheritable: A pointer to the proposed new inheritable capabilities set
266 * @permitted: A pointer to the proposed new permitted capabilities set
269 * process's capability sets. The changes are made to the proposed new
272 int cap_capset(struct cred *new, in cap_capset() argument
288 /* no new pI capabilities outside bounding set */ in cap_capset()
291 /* verify restrictions on target's new Permitted set */ in cap_capset()
299 new->cap_effective = *effective; in cap_capset()
300 new->cap_inheritable = *inheritable; in cap_capset()
301 new->cap_permitted = *permitted; in cap_capset()
307 new->cap_ambient = cap_intersect(new->cap_ambient, in cap_capset()
310 if (WARN_ON(!cap_ambient_invariant_ok(new))) in cap_capset()
567 * Return: On success, return the new size; on error, return < 0.
623 * Calculate the new process capability sets from the capability sets attached
631 struct cred *new = bprm->cred; in bprm_caps_from_vfs_caps() local
644 new->cap_permitted.val = in bprm_caps_from_vfs_caps()
645 (new->cap_bset.val & caps->permitted.val) | in bprm_caps_from_vfs_caps()
646 (new->cap_inheritable.val & caps->inheritable.val); in bprm_caps_from_vfs_caps()
648 if (caps->permitted.val & ~new->cap_permitted.val) in bprm_caps_from_vfs_caps()
832 struct cred *new = bprm->cred; in handle_privileged_root() local
841 if (has_fcap && __is_suid(root_uid, new)) { in handle_privileged_root()
850 if (__is_eff(root_uid, new) || __is_real(root_uid, new)) { in handle_privileged_root()
852 new->cap_permitted = cap_combine(old->cap_bset, in handle_privileged_root()
858 if (__is_eff(root_uid, new)) in handle_privileged_root()
886 static inline bool nonroot_raised_pE(struct cred *new, const struct cred *old, in nonroot_raised_pE() argument
891 if ((__cap_grew(effective, ambient, new) && in nonroot_raised_pE()
892 !(__cap_full(effective, new) && in nonroot_raised_pE()
893 (__is_eff(root, new) || __is_real(root, new)) && in nonroot_raised_pE()
896 __is_suid(root, new) && in nonroot_raised_pE()
897 !__cap_full(effective, new)) || in nonroot_raised_pE()
898 (uid_eq(new->euid, old->euid) && in nonroot_raised_pE()
900 __cap_gained(permitted, new, old)) || in nonroot_raised_pE()
901 __cap_gained(ambient, new, old)))) in nonroot_raised_pE()
913 * Set up the proposed credentials for a new execution context being
923 struct cred *new = bprm->cred; in cap_bprm_creds_from_file() local
935 root_uid = make_kuid(new->user_ns, 0); in cap_bprm_creds_from_file()
940 if (__cap_gained(permitted, new, old)) in cap_bprm_creds_from_file()
946 * In addition, if NO_NEW_PRIVS, then ensure we get no new privs. in cap_bprm_creds_from_file()
948 id_changed = !uid_eq(new->euid, old->euid) || !in_group_p(new->egid); in cap_bprm_creds_from_file()
950 if ((id_changed || __cap_gained(permitted, new, old)) && in cap_bprm_creds_from_file()
952 !ptracer_capable(current, new->user_ns))) { in cap_bprm_creds_from_file()
954 if (!ns_capable(new->user_ns, CAP_SETUID) || in cap_bprm_creds_from_file()
956 new->euid = new->uid; in cap_bprm_creds_from_file()
957 new->egid = new->gid; in cap_bprm_creds_from_file()
959 new->cap_permitted = cap_intersect(new->cap_permitted, in cap_bprm_creds_from_file()
963 new->suid = new->fsuid = new->euid; in cap_bprm_creds_from_file()
964 new->sgid = new->fsgid = new->egid; in cap_bprm_creds_from_file()
968 cap_clear(new->cap_ambient); in cap_bprm_creds_from_file()
974 new->cap_permitted = cap_combine(new->cap_permitted, new->cap_ambient); in cap_bprm_creds_from_file()
981 new->cap_effective = new->cap_permitted; in cap_bprm_creds_from_file()
983 new->cap_effective = new->cap_ambient; in cap_bprm_creds_from_file()
985 if (WARN_ON(!cap_ambient_invariant_ok(new))) in cap_bprm_creds_from_file()
988 if (nonroot_raised_pE(new, old, root_uid, has_fcap)) { in cap_bprm_creds_from_file()
989 ret = audit_log_bprm_fcaps(bprm, new, old); in cap_bprm_creds_from_file()
994 new->securebits &= ~issecure_mask(SECURE_KEEP_CAPS); in cap_bprm_creds_from_file()
996 if (WARN_ON(!cap_ambient_invariant_ok(new))) in cap_bprm_creds_from_file()
1001 !uid_eq(new->euid, old->uid) || in cap_bprm_creds_from_file()
1002 !gid_eq(new->egid, old->gid) || in cap_bprm_creds_from_file()
1003 (!__is_real(root_uid, new) && in cap_bprm_creds_from_file()
1005 __cap_grew(permitted, ambient, new)))) in cap_bprm_creds_from_file()
1110 * cevans - New behaviour, Oct '99
1120 static inline void cap_emulate_setxuid(struct cred *new, const struct cred *old) in cap_emulate_setxuid() argument
1127 (!uid_eq(new->uid, root_uid) && in cap_emulate_setxuid()
1128 !uid_eq(new->euid, root_uid) && in cap_emulate_setxuid()
1129 !uid_eq(new->suid, root_uid))) { in cap_emulate_setxuid()
1131 cap_clear(new->cap_permitted); in cap_emulate_setxuid()
1132 cap_clear(new->cap_effective); in cap_emulate_setxuid()
1140 cap_clear(new->cap_ambient); in cap_emulate_setxuid()
1142 if (uid_eq(old->euid, root_uid) && !uid_eq(new->euid, root_uid)) in cap_emulate_setxuid()
1143 cap_clear(new->cap_effective); in cap_emulate_setxuid()
1144 if (!uid_eq(old->euid, root_uid) && uid_eq(new->euid, root_uid)) in cap_emulate_setxuid()
1145 new->cap_effective = new->cap_permitted; in cap_emulate_setxuid()
1150 * @new: The proposed credentials
1159 int cap_task_fix_setuid(struct cred *new, const struct cred *old, int flags) in cap_task_fix_setuid() argument
1168 cap_emulate_setxuid(new, old); in cap_task_fix_setuid()
1180 if (uid_eq(old->fsuid, root_uid) && !uid_eq(new->fsuid, root_uid)) in cap_task_fix_setuid()
1181 new->cap_effective = in cap_task_fix_setuid()
1182 cap_drop_fs_set(new->cap_effective); in cap_task_fix_setuid()
1184 if (!uid_eq(old->fsuid, root_uid) && uid_eq(new->fsuid, root_uid)) in cap_task_fix_setuid()
1185 new->cap_effective = in cap_task_fix_setuid()
1186 cap_raise_fs_set(new->cap_effective, in cap_task_fix_setuid()
1187 new->cap_permitted); in cap_task_fix_setuid()
1272 struct cred *new; in cap_prctl_drop() local
1279 new = prepare_creds(); in cap_prctl_drop()
1280 if (!new) in cap_prctl_drop()
1282 cap_lower(new->cap_bset, cap); in cap_prctl_drop()
1283 return commit_creds(new); in cap_prctl_drop()
1305 struct cred *new; in cap_task_prctl() local
1372 new = prepare_creds(); in cap_task_prctl()
1373 if (!new) in cap_task_prctl()
1375 new->securebits = arg2; in cap_task_prctl()
1376 return commit_creds(new); in cap_task_prctl()
1390 new = prepare_creds(); in cap_task_prctl()
1391 if (!new) in cap_task_prctl()
1394 new->securebits |= issecure_mask(SECURE_KEEP_CAPS); in cap_task_prctl()
1396 new->securebits &= ~issecure_mask(SECURE_KEEP_CAPS); in cap_task_prctl()
1397 return commit_creds(new); in cap_task_prctl()
1404 new = prepare_creds(); in cap_task_prctl()
1405 if (!new) in cap_task_prctl()
1407 cap_clear(new->cap_ambient); in cap_task_prctl()
1408 return commit_creds(new); in cap_task_prctl()
1427 new = prepare_creds(); in cap_task_prctl()
1428 if (!new) in cap_task_prctl()
1431 cap_raise(new->cap_ambient, arg3); in cap_task_prctl()
1433 cap_lower(new->cap_ambient, arg3); in cap_task_prctl()
1434 return commit_creds(new); in cap_task_prctl()
1444 * cap_vm_enough_memory - Determine whether a new virtual mapping is permitted
1445 * @mm: The VM space in which the new mapping is to be made
1448 * Determine whether the allocation of a new virtual mapping by the current