/* * AppArmor security module * * This file contains AppArmor contexts used to associate "labels" to objects. * * Copyright (C) 1998-2008 Novell/SUSE * Copyright 2009-2010 Canonical Ltd. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation, version 2 of the * License. */ #ifndef __AA_CONTEXT_H #define __AA_CONTEXT_H #include <linux/cred.h> #include <linux/slab.h> #include <linux/sched.h> #include "label.h" #include "policy_ns.h" #define cred_ctx(X) ((X)->security) #define current_ctx() cred_ctx(current_cred()) /** * struct aa_task_ctx - primary label for confined tasks * @label: the current label (NOT NULL) * @exec: label to transition to on next exec (MAYBE NULL) * @previous: label the task may return to (MAYBE NULL) * @token: magic value the task must know for returning to @previous * * Contains the task's current label (which could change due to * change_hat). Plus the hat_magic needed during change_hat. * * TODO: make so a task can be confined by a stack of contexts */ struct aa_task_ctx { struct aa_label *label; struct aa_label *onexec; struct aa_label *previous; u64 token; }; struct aa_task_ctx *aa_alloc_task_context(gfp_t flags); void aa_free_task_context(struct aa_task_ctx *ctx); void aa_dup_task_context(struct aa_task_ctx *new, const struct aa_task_ctx *old); int aa_replace_current_label(struct aa_label *label); int aa_set_current_onexec(struct aa_label *label, bool stack); int aa_set_current_hat(struct aa_label *label, u64 token); int aa_restore_previous_label(u64 cookie); struct aa_label *aa_get_task_label(struct task_struct *task); /** * aa_cred_raw_label - obtain cred's label * @cred: cred to obtain label from (NOT NULL) * * Returns: confining label * * does NOT increment reference count */
static inline struct aa_label *aa_cred_raw_label(const struct cred *cred) { struct aa_task_ctx *ctx = cred_ctx(cred); AA_BUG(!ctx || !ctx->label); return ctx->label; }Contributors
Person | Tokens | Prop | Commits | CommitProp |
John Johansen | 41 | 100.00% | 5 | 100.00% |
Total | 41 | 100.00% | 5 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
John Johansen | 24 | 100.00% | 3 | 100.00% |
Total | 24 | 100.00% | 3 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
John Johansen | 23 | 100.00% | 4 | 100.00% |
Total | 23 | 100.00% | 4 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
John Johansen | 22 | 100.00% | 3 | 100.00% |
Total | 22 | 100.00% | 3 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
John Johansen | 18 | 100.00% | 2 | 100.00% |
Total | 18 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
John Johansen | 38 | 100.00% | 3 | 100.00% |
Total | 38 | 100.00% | 3 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
John Johansen | 24 | 100.00% | 2 | 100.00% |
Total | 24 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
John Johansen | 36 | 100.00% | 3 | 100.00% |
Total | 36 | 100.00% | 3 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
John Johansen | 53 | 100.00% | 4 | 100.00% |
Total | 53 | 100.00% | 4 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
John Johansen | 44 | 100.00% | 3 | 100.00% |
Total | 44 | 100.00% | 3 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
John Johansen | 44 | 100.00% | 3 | 100.00% |
Total | 44 | 100.00% | 3 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
John Johansen | 529 | 100.00% | 9 | 100.00% |
Total | 529 | 100.00% | 9 | 100.00% |