apparmor.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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. #ifndef __APPARMOR_H
  15. #define __APPARMOR_H
  16. #include <linux/fs.h>
  17. #include "match.h"
  18. /* Control parameters settable through module/boot flags */
  19. extern enum audit_mode aa_g_audit;
  20. extern int aa_g_audit_header;
  21. extern int aa_g_debug;
  22. extern int aa_g_lock_policy;
  23. extern int aa_g_logsyscall;
  24. extern int aa_g_paranoid_load;
  25. extern unsigned int aa_g_path_max;
  26. /*
  27. * DEBUG remains global (no per profile flag) since it is mostly used in sysctl
  28. * which is not related to profile accesses.
  29. */
  30. #define AA_DEBUG(fmt, args...) \
  31. do { \
  32. if (aa_g_debug && printk_ratelimit()) \
  33. printk(KERN_DEBUG "AppArmor: " fmt, ##args); \
  34. } while (0)
  35. #define AA_ERROR(fmt, args...) \
  36. do { \
  37. if (printk_ratelimit()) \
  38. printk(KERN_ERR "AppArmor: " fmt, ##args); \
  39. } while (0)
  40. /* Flag indicating whether initialization completed */
  41. extern int apparmor_initialized __initdata;
  42. /* fn's in lib */
  43. char *aa_split_fqname(char *args, char **ns_name);
  44. void aa_info_message(const char *str);
  45. void *kvmalloc(size_t size);
  46. void kvfree(void *buffer);
  47. /**
  48. * aa_strneq - compare null terminated @str to a non null terminated substring
  49. * @str: a null terminated string
  50. * @sub: a substring, not necessarily null terminated
  51. * @len: length of @sub to compare
  52. *
  53. * The @str string must be full consumed for this to be considered a match
  54. */
  55. static inline bool aa_strneq(const char *str, const char *sub, int len)
  56. {
  57. return !strncmp(str, sub, len) && !str[len];
  58. }
  59. /**
  60. * aa_dfa_null_transition - step to next state after null character
  61. * @dfa: the dfa to match against
  62. * @start: the state of the dfa to start matching in
  63. *
  64. * aa_dfa_null_transition transitions to the next state after a null
  65. * character which is not used in standard matching and is only
  66. * used to separate pairs.
  67. */
  68. static inline unsigned int aa_dfa_null_transition(struct aa_dfa *dfa,
  69. unsigned int start)
  70. {
  71. /* the null transition only needs the string's null terminator byte */
  72. return aa_dfa_match_len(dfa, start, "", 1);
  73. }
  74. static inline bool mediated_filesystem(struct inode *inode)
  75. {
  76. return !(inode->i_sb->s_flags & MS_NOUSER);
  77. }
  78. #endif /* __APPARMOR_H */