linux/security/apparmor/include/apparmor.h
<<
>>
Prefs
   1/*
   2 * AppArmor security module
   3 *
   4 * This file contains AppArmor basic global and lib definitions
   5 *
   6 * Copyright (C) 1998-2008 Novell/SUSE
   7 * Copyright 2009-2010 Canonical Ltd.
   8 *
   9 * This program is free software; you can redistribute it and/or
  10 * modify it under the terms of the GNU General Public License as
  11 * published by the Free Software Foundation, version 2 of the
  12 * License.
  13 */
  14
  15#ifndef __APPARMOR_H
  16#define __APPARMOR_H
  17
  18#include <linux/fs.h>
  19
  20#include "match.h"
  21
  22/* Control parameters settable through module/boot flags */
  23extern enum audit_mode aa_g_audit;
  24extern int aa_g_audit_header;
  25extern int aa_g_debug;
  26extern int aa_g_lock_policy;
  27extern int aa_g_logsyscall;
  28extern int aa_g_paranoid_load;
  29extern unsigned int aa_g_path_max;
  30
  31/*
  32 * DEBUG remains global (no per profile flag) since it is mostly used in sysctl
  33 * which is not related to profile accesses.
  34 */
  35
  36#define AA_DEBUG(fmt, args...)                                          \
  37        do {                                                            \
  38                if (aa_g_debug && printk_ratelimit())                   \
  39                        printk(KERN_DEBUG "AppArmor: " fmt, ##args);    \
  40        } while (0)
  41
  42#define AA_ERROR(fmt, args...)                                          \
  43        do {                                                            \
  44                if (printk_ratelimit())                                 \
  45                        printk(KERN_ERR "AppArmor: " fmt, ##args);      \
  46        } while (0)
  47
  48/* Flag indicating whether initialization completed */
  49extern int apparmor_initialized __initdata;
  50
  51/* fn's in lib */
  52char *aa_split_fqname(char *args, char **ns_name);
  53void aa_info_message(const char *str);
  54void *kvmalloc(size_t size);
  55void kvfree(void *buffer);
  56
  57
  58/**
  59 * aa_strneq - compare null terminated @str to a non null terminated substring
  60 * @str: a null terminated string
  61 * @sub: a substring, not necessarily null terminated
  62 * @len: length of @sub to compare
  63 *
  64 * The @str string must be full consumed for this to be considered a match
  65 */
  66static inline bool aa_strneq(const char *str, const char *sub, int len)
  67{
  68        return !strncmp(str, sub, len) && !str[len];
  69}
  70
  71/**
  72 * aa_dfa_null_transition - step to next state after null character
  73 * @dfa: the dfa to match against
  74 * @start: the state of the dfa to start matching in
  75 *
  76 * aa_dfa_null_transition transitions to the next state after a null
  77 * character which is not used in standard matching and is only
  78 * used to separate pairs.
  79 */
  80static inline unsigned int aa_dfa_null_transition(struct aa_dfa *dfa,
  81                                                  unsigned int start)
  82{
  83        /* the null transition only needs the string's null terminator byte */
  84        return aa_dfa_match_len(dfa, start, "", 1);
  85}
  86
  87static inline bool mediated_filesystem(struct inode *inode)
  88{
  89        return !(inode->i_sb->s_flags & MS_NOUSER);
  90}
  91
  92#endif /* __APPARMOR_H */
  93