LCOV - code coverage report
Current view: top level - security/apparmor/include - apparmor.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 6 16.7 %
Date: 2014-02-18 Functions: 0 0 -
Branches: 0 4 0.0 %

           Branch data     Line data    Source code
       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/slab.h>
      19                 :            : #include <linux/fs.h>
      20                 :            : 
      21                 :            : #include "match.h"
      22                 :            : 
      23                 :            : /*
      24                 :            :  * Class of mediation types in the AppArmor policy db
      25                 :            :  */
      26                 :            : #define AA_CLASS_ENTRY          0
      27                 :            : #define AA_CLASS_UNKNOWN        1
      28                 :            : #define AA_CLASS_FILE           2
      29                 :            : #define AA_CLASS_CAP            3
      30                 :            : #define AA_CLASS_NET            4
      31                 :            : #define AA_CLASS_RLIMITS        5
      32                 :            : #define AA_CLASS_DOMAIN         6
      33                 :            : 
      34                 :            : #define AA_CLASS_LAST           AA_CLASS_DOMAIN
      35                 :            : 
      36                 :            : /* Control parameters settable through module/boot flags */
      37                 :            : extern enum audit_mode aa_g_audit;
      38                 :            : extern bool aa_g_audit_header;
      39                 :            : extern bool aa_g_debug;
      40                 :            : extern bool aa_g_lock_policy;
      41                 :            : extern bool aa_g_logsyscall;
      42                 :            : extern bool aa_g_paranoid_load;
      43                 :            : extern unsigned int aa_g_path_max;
      44                 :            : 
      45                 :            : /*
      46                 :            :  * DEBUG remains global (no per profile flag) since it is mostly used in sysctl
      47                 :            :  * which is not related to profile accesses.
      48                 :            :  */
      49                 :            : 
      50                 :            : #define AA_DEBUG(fmt, args...)                                          \
      51                 :            :         do {                                                            \
      52                 :            :                 if (aa_g_debug && printk_ratelimit())                   \
      53                 :            :                         printk(KERN_DEBUG "AppArmor: " fmt, ##args);  \
      54                 :            :         } while (0)
      55                 :            : 
      56                 :            : #define AA_ERROR(fmt, args...)                                          \
      57                 :            :         do {                                                            \
      58                 :            :                 if (printk_ratelimit())                                 \
      59                 :            :                         printk(KERN_ERR "AppArmor: " fmt, ##args);    \
      60                 :            :         } while (0)
      61                 :            : 
      62                 :            : /* Flag indicating whether initialization completed */
      63                 :            : extern int apparmor_initialized __initdata;
      64                 :            : 
      65                 :            : /* fn's in lib */
      66                 :            : char *aa_split_fqname(char *args, char **ns_name);
      67                 :            : void aa_info_message(const char *str);
      68                 :            : void *__aa_kvmalloc(size_t size, gfp_t flags);
      69                 :            : void kvfree(void *buffer);
      70                 :            : 
      71                 :            : static inline void *kvmalloc(size_t size)
      72                 :            : {
      73                 :          0 :         return __aa_kvmalloc(size, 0);
      74                 :            : }
      75                 :            : 
      76                 :            : static inline void *kvzalloc(size_t size)
      77                 :            : {
      78                 :          0 :         return __aa_kvmalloc(size, __GFP_ZERO);
      79                 :            : }
      80                 :            : 
      81                 :            : /* returns 0 if kref not incremented */
      82                 :            : static inline int kref_get_not0(struct kref *kref)
      83                 :            : {
      84                 :          0 :         return atomic_inc_not_zero(&kref->refcount);
      85                 :            : }
      86                 :            : 
      87                 :            : /**
      88                 :            :  * aa_strneq - compare null terminated @str to a non null terminated substring
      89                 :            :  * @str: a null terminated string
      90                 :            :  * @sub: a substring, not necessarily null terminated
      91                 :            :  * @len: length of @sub to compare
      92                 :            :  *
      93                 :            :  * The @str string must be full consumed for this to be considered a match
      94                 :            :  */
      95                 :            : static inline bool aa_strneq(const char *str, const char *sub, int len)
      96                 :            : {
      97 [ #  # ][ #  # ]:          0 :         return !strncmp(str, sub, len) && !str[len];
      98                 :            : }
      99                 :            : 
     100                 :            : /**
     101                 :            :  * aa_dfa_null_transition - step to next state after null character
     102                 :            :  * @dfa: the dfa to match against
     103                 :            :  * @start: the state of the dfa to start matching in
     104                 :            :  *
     105                 :            :  * aa_dfa_null_transition transitions to the next state after a null
     106                 :            :  * character which is not used in standard matching and is only
     107                 :            :  * used to separate pairs.
     108                 :            :  */
     109                 :            : static inline unsigned int aa_dfa_null_transition(struct aa_dfa *dfa,
     110                 :            :                                                   unsigned int start)
     111                 :            : {
     112                 :            :         /* the null transition only needs the string's null terminator byte */
     113                 :          0 :         return aa_dfa_next(dfa, start, 0);
     114                 :            : }
     115                 :            : 
     116                 :            : static inline bool mediated_filesystem(struct inode *inode)
     117                 :            : {
     118                 :   37526774 :         return !(inode->i_sb->s_flags & MS_NOUSER);
     119                 :            : }
     120                 :            : 
     121                 :            : #endif /* __APPARMOR_H */

Generated by: LCOV version 1.9