static int set_user(struct cred *new)
{
 struct user_struct *new_user;

	new_user = alloc_uid(current_user_ns(), new->uid);
 if (!new_user)
 return -EAGAIN;

 /*
	 * We don't fail in case of NPROC limit excess here because too many
	 * poorly written programs don't check set*uid() return code, assuming
	 * it never fails if called by root.  We may still enforce NPROC limit
	 * for programs doing set*uid()+execve() by harmlessly deferring the
	 * failure to the execve() stage.
	 */
 if (atomic_read(&new_user->processes) >= rlimit(RLIMIT_NPROC) &&
			new_user != INIT_USER)
		current->flags |= PF_NPROC_EXCEEDED;
 else
		current->flags &= ~PF_NPROC_EXCEEDED;

	free_uid(new->user);
 new->user = new_user;
 return 0;
}

This category addresses vulnerabilities caused by flawed access control mechanisms, where incorrect permission settings allow unauthorized users to access restricted resources.