From e32b4ba72419b1adb23dabc1e6d4328d1252a0bb Mon Sep 17 00:00:00 2001 From: Tyler Hicks Date: Thu, 13 Sep 2018 16:28:22 +0000 Subject: [PATCH] all: Use HTTPS links for apparmor.net Signed-off-by: Tyler Hicks --- README | 2 +- binutils/aa-enabled.pod | 94 ++++++++ changehat/mod_apparmor/mod_apparmor.pod | 2 +- libraries/libapparmor/doc/aa_change_hat.pod | 2 +- .../libapparmor/doc/aa_change_profile.pod | 2 +- libraries/libapparmor/doc/aa_features.pod | 2 +- .../libapparmor/doc/aa_find_mountpoint.pod | 2 +- libraries/libapparmor/doc/aa_getcon.pod | 2 +- .../libapparmor/doc/aa_kernel_interface.pod | 2 +- libraries/libapparmor/doc/aa_policy_cache.pod | 2 +- libraries/libapparmor/doc/aa_query_label.pod | 2 +- libraries/libapparmor/doc/aa_splitcon.pod | 2 +- .../libapparmor/doc/aa_stack_profile.pod | 221 ++++++++++++++++++ libraries/libapparmor/include/sys/apparmor.h | 2 +- libraries/libapparmor/swig/python/setup.py.in | 2 +- parser/README | 2 +- parser/apparmor.d.pod | 2 +- parser/apparmor.pod | 2 +- parser/apparmor_parser.pod | 2 +- parser/subdomain.conf.pod | 2 +- utils/aa-audit.pod | 2 +- utils/aa-autodep.pod | 2 +- utils/aa-cleanprof.pod | 2 +- utils/aa-complain.pod | 2 +- utils/aa-disable.pod | 2 +- utils/aa-enforce.pod | 2 +- utils/aa-exec.pod | 2 +- utils/aa-genprof.pod | 2 +- utils/aa-logprof.pod | 2 +- utils/aa-mergeprof.pod | 2 +- utils/aa-status.pod | 2 +- utils/aa-unconfined.pod | 4 +- utils/logprof.conf.pod | 2 +- utils/po/Makefile | 11 + utils/vim/apparmor.vim.pod | 2 +- 35 files changed, 359 insertions(+), 33 deletions(-) create mode 100644 binutils/aa-enabled.pod create mode 100644 libraries/libapparmor/doc/aa_stack_profile.pod diff --git a/README b/README index 4ebd25d9b..b5d9ea1ba 100644 --- a/README +++ b/README @@ -17,7 +17,7 @@ library, available under the LGPL license, which allows change_hat(2) and change_profile(2) to be used by non-GPL binaries). For more information, you can read the techdoc.pdf (available after -building the parser) and by visiting the http://apparmor.net/ web +building the parser) and by visiting the https://apparmor.net/ web site. diff --git a/binutils/aa-enabled.pod b/binutils/aa-enabled.pod new file mode 100644 index 000000000..9fb805d11 --- /dev/null +++ b/binutils/aa-enabled.pod @@ -0,0 +1,94 @@ +# This publication is intellectual property of Canonical Ltd. Its contents +# can be duplicated, either in part or in whole, provided that a copyright +# label is visibly located on each copy. +# +# All information found in this book has been compiled with utmost +# attention to detail. However, this does not guarantee complete accuracy. +# Neither Canonical Ltd, the authors, nor the translators shall be held +# liable for possible errors or the consequences thereof. +# +# Many of the software and hardware descriptions cited in this book +# are registered trademarks. All trade names are subject to copyright +# restrictions and may be registered trade marks. Canonical Ltd +# essentially adheres to the manufacturer's spelling. +# +# Names of products and trademarks appearing in this book (with or without +# specific notation) are likewise subject to trademark and trade protection +# laws and may thus fall under copyright restrictions. +# + + +=pod + +=head1 NAME + +aa-enabled - test whether AppArmor is enabled + +=head1 SYNOPSIS + +B [options] + +=head1 DESCRIPTION + +B is used to determine if AppArmor is enabled. + +=head1 OPTIONS + +B accepts the following arguments: + +=over 4 + +=item -h, --help + +Display a brief usage guide. + +=item -q, --quiet + +Do not output anything to stdout. This option is intended to be used by +scripts that simply want to use the exit code to determine if AppArmor is +enabled. + +=back + +=head1 EXIT STATUS + +Upon exiting, B will set its exit status to the following values: + +=over 4 + +=item 0: + +if AppArmor is enabled. + +=item 1: + +if AppArmor is not enabled/loaded. + +=item 2: + +intentionally not used as an B exit status. + +=item 3: + +if the AppArmor control files aren't available under /sys/kernel/security/. + +=item 4: + +if B doesn't have enough privileges to read the apparmor control files. + +=item 64: + +if any unexpected error or condition is encountered. + +=back + +=head1 BUGS + +If you find any bugs, please report them at +L. + +=head1 SEE ALSO + +apparmor(7), apparmor.d(5), aa_is_enabled(2), and L. + +=cut diff --git a/changehat/mod_apparmor/mod_apparmor.pod b/changehat/mod_apparmor/mod_apparmor.pod index 702fd072a..f9352ee78 100644 --- a/changehat/mod_apparmor/mod_apparmor.pod +++ b/changehat/mod_apparmor/mod_apparmor.pod @@ -140,6 +140,6 @@ them at L. =head1 SEE ALSO apparmor(7), subdomain.conf(5), apparmor_parser(8), aa_change_hat(2) and -L. +L. =cut diff --git a/libraries/libapparmor/doc/aa_change_hat.pod b/libraries/libapparmor/doc/aa_change_hat.pod index 7b0eeafdd..3583301c7 100644 --- a/libraries/libapparmor/doc/aa_change_hat.pod +++ b/libraries/libapparmor/doc/aa_change_hat.pod @@ -257,6 +257,6 @@ should be used. apparmor(7), apparmor.d(5), apparmor_parser(8), aa_change_profile(2), aa_getcon(2) and -L. +L. =cut diff --git a/libraries/libapparmor/doc/aa_change_profile.pod b/libraries/libapparmor/doc/aa_change_profile.pod index c9121fe67..ce3b34868 100644 --- a/libraries/libapparmor/doc/aa_change_profile.pod +++ b/libraries/libapparmor/doc/aa_change_profile.pod @@ -204,6 +204,6 @@ separate processes should be used. =head1 SEE ALSO apparmor(7), apparmor.d(5), apparmor_parser(8), aa_change_hat(2) and -L. +L. =cut diff --git a/libraries/libapparmor/doc/aa_features.pod b/libraries/libapparmor/doc/aa_features.pod index ffbe113ac..ed2004a0e 100644 --- a/libraries/libapparmor/doc/aa_features.pod +++ b/libraries/libapparmor/doc/aa_features.pod @@ -143,6 +143,6 @@ L. =head1 SEE ALSO -openat(2) and L. +openat(2) and L. =cut diff --git a/libraries/libapparmor/doc/aa_find_mountpoint.pod b/libraries/libapparmor/doc/aa_find_mountpoint.pod index ed0f353ef..34f2ed79b 100644 --- a/libraries/libapparmor/doc/aa_find_mountpoint.pod +++ b/libraries/libapparmor/doc/aa_find_mountpoint.pod @@ -115,6 +115,6 @@ L. =head1 SEE ALSO apparmor(7), apparmor.d(5), apparmor_parser(8), and -L. +L. =cut diff --git a/libraries/libapparmor/doc/aa_getcon.pod b/libraries/libapparmor/doc/aa_getcon.pod index 32ef61fc8..326b44124 100644 --- a/libraries/libapparmor/doc/aa_getcon.pod +++ b/libraries/libapparmor/doc/aa_getcon.pod @@ -132,6 +132,6 @@ L. =head1 SEE ALSO apparmor(7), apparmor.d(5), apparmor_parser(8), aa_change_profile(2), -aa_splitcon(3) and L. +aa_splitcon(3) and L. =cut diff --git a/libraries/libapparmor/doc/aa_kernel_interface.pod b/libraries/libapparmor/doc/aa_kernel_interface.pod index 08084c12b..4aeacef05 100644 --- a/libraries/libapparmor/doc/aa_kernel_interface.pod +++ b/libraries/libapparmor/doc/aa_kernel_interface.pod @@ -157,6 +157,6 @@ L. =head1 SEE ALSO -aa_features(3), openat(2) and L. +aa_features(3), openat(2) and L. =cut diff --git a/libraries/libapparmor/doc/aa_policy_cache.pod b/libraries/libapparmor/doc/aa_policy_cache.pod index 672d616b1..c112cc1b9 100644 --- a/libraries/libapparmor/doc/aa_policy_cache.pod +++ b/libraries/libapparmor/doc/aa_policy_cache.pod @@ -120,6 +120,6 @@ L. =head1 SEE ALSO aa_features(3), aa_kernel_interface(3), openat(2) and -L. +L. =cut diff --git a/libraries/libapparmor/doc/aa_query_label.pod b/libraries/libapparmor/doc/aa_query_label.pod index 3e943a7ad..e2e6c4bca 100644 --- a/libraries/libapparmor/doc/aa_query_label.pod +++ b/libraries/libapparmor/doc/aa_query_label.pod @@ -132,6 +132,6 @@ L. =head1 SEE ALSO apparmor(7), apparmor.d(5), apparmor_parser(8), aa_getcon(2), aa_splitcon(3) -and L. +and L. =cut diff --git a/libraries/libapparmor/doc/aa_splitcon.pod b/libraries/libapparmor/doc/aa_splitcon.pod index 21bdb902d..e3b376334 100644 --- a/libraries/libapparmor/doc/aa_splitcon.pod +++ b/libraries/libapparmor/doc/aa_splitcon.pod @@ -67,6 +67,6 @@ L. =head1 SEE ALSO -aa_getcon(2) and L. +aa_getcon(2) and L. =cut diff --git a/libraries/libapparmor/doc/aa_stack_profile.pod b/libraries/libapparmor/doc/aa_stack_profile.pod new file mode 100644 index 000000000..c3b6c33e3 --- /dev/null +++ b/libraries/libapparmor/doc/aa_stack_profile.pod @@ -0,0 +1,221 @@ +# This publication is intellectual property of Canonical Ltd. Its contents +# can be duplicated, either in part or in whole, provided that a copyright +# label is visibly located on each copy. +# +# All information found in this book has been compiled with utmost +# attention to detail. However, this does not guarantee complete accuracy. +# Neither Canonical Ltd, the authors, nor the translators shall be held +# liable for possible errors or the consequences thereof. +# +# Many of the software and hardware descriptions cited in this book +# are registered trademarks. All trade names are subject to copyright +# restrictions and may be registered trade marks. Canonical Ltd. +# essentially adhere to the manufacturer's spelling. +# +# Names of products and trademarks appearing in this book (with or without +# specific notation) are likewise subject to trademark and trade protection +# laws and may thus fall under copyright restrictions. +# + + +=pod + +=head1 NAME + +aa_stack_profile, aa_stack_onexec - combine multiple profiles to confine a task + +=head1 SYNOPSIS + +B<#include Esys/apparmor.hE> + +B + +B + +Link with B<-lapparmor> when compiling. + +=head1 DESCRIPTION + +AppArmor supports stacking two or more profiles when confining a task. The +result is an intersection of all profiles which are stacked. Stacking profiles +together is desirable when wanting to ensure that confinement will never become +more permissive. When changing between two profiles, as performed with +aa_change_profile(2), there is always the possibility that the new profile is +more permissive than the old profile but that possibility is eliminated when +using aa_stack_profile(). + +To stack a profile with the current confinement context, a task can use the +aa_stack_profile() function. The I parameter is a NUL-terminated +string indicating a profile name that should be stacked with the current +confinement. + +Calling aa_stack_profile("profile_a") while unconfined is equivalent to calling +aa_change_profile("profile_a") since the intersection of unconfined and +"profile_a" is "profile_a". Calling aa_stack_profile("profile_b") while +confined by "profile_a" results in the task's confinement to be the +intersection of "profile_a" and "profile_b". The resulting confinement context +will be represented as "profile_a//&profile_b" in audit log messages, the +return value of aa_getcon(2), etc. + +Confined programs wanting to use aa_stack_profile() need to have rules +permitting stacking the named profile. See apparmor.d(8) for details. + +Open file descriptors may not be remediated after a call to aa_stack_profile() +so the calling program must close(2) open file descriptors to ensure they +are not available after calling aa_stack_profile(). + +The aa_stack_onexec() function is like the aa_stack_profile() function +except it specifies that the stacking should take place on the next exec +instead of immediately. The delayed profile change takes precedence over any +exec transition rules within the confining profile. Delaying the stacking +boundary has a couple of advantages, it removes the need for stub transition +profiles and the exec boundary is a natural security layer where potentially +sensitive memory is unmapped. + +=head1 RETURN VALUE + +On success zero is returned. On error, -1 is returned, and +errno(3) is set appropriately. + +=head1 ERRORS + +=over 4 + +=item B + +AppArmor is not loaded, neither a profile nor a namespace was specified, +or the communication via the F file did not conform +to protocol. + +=item B + +Insufficient kernel memory was available. + +=item B + +The specified profile does not exist, or is not visible from the current +namespace. + +=back + +=head1 NOTES + +Using aa_stack_profile() and related libapparmor functions are the only way to +ensure compatibility between varying kernel versions. However, there may be +some situations where libapparmor is not available and directly interacting +with the AppArmor filesystem is required to stack a profile. + +To immediately stack a profile named "profile_a", as performed with +aa_stack_profile("profile_a"), the equivalent of this shell command can be +used: + + $ echo -n "stackprofile profile_a" > /proc/self/attr/current + +To stack a profile named "profile_a" at the next exec, as performed with +aa_stack_onexec("profile_a"), the equivalent of this shell command can be used: + + $ echo -n "stackexec profile_a" > /proc/self/attr/exec + +These raw AppArmor filesystem operations must only be used when using +libapparmor is not a viable option. + +=head1 EXAMPLE + +The following example shows a simple, if contrived, use of +aa_stack_profile(). + + #include + #include + #include + #include + #include + #include + #include + #include + + static void read_passwd() + { + int fd; + char buf[10]; + + if ((fd=open("/etc/passwd", O_RDONLY)) < 0) { + perror("Failure opening /etc/passwd"); + _exit(1); + } + + /* Verify that we can read /etc/passwd */ + memset(&buf, 0, 10); + if (read(fd, &buf, 10) == -1) { + perror("Failure reading /etc/passwd"); + _exit(1); + } + buf[9] = '\0'; + printf("/etc/passwd: %s\n", buf); + close(fd); + } + + int main(int argc, char * argv[]) + { + printf("Before aa_stack_profile():\n"); + read_passwd(); + + /* stack the "i_cant_be_trusted_anymore" profile, which + * should not have read access to /etc/passwd. */ + if (aa_stack_profile("i_cant_be_trusted_anymore") < 0) { + perror("Failure changing profile -- aborting"); + _exit(1); + } + + printf("After aa_stack_profile():\n"); + read_passwd(); + _exit(0); + } + +This code example requires a profile similar to the following to be loaded +with apparmor_parser(8): + + # Confine stack_p to be able to read /etc/passwd and aa_stack_profile() + # to the 'i_cant_be_trusted_anymore' profile. + /tmp/stack_p { + /etc/ld.so.cache mr, + /lib/ld-*.so* mrix, + /lib/libc*.so* mr, + + /etc/passwd r, + + # Needed for aa_stack_profile() + /usr/lib/libapparmor*.so* mr, + /proc/[0-9]*/attr/current w, + } + +As well as the profile to stack: + + profile i_cant_be_trusted_anymore { + /etc/ld.so.cache mr, + /lib/ld-*.so* mrix, + /lib/libc*.so* mr, + } + +The output when run: + + $ /tmp/stack_p + Before aa_stack_profile(): + /etc/passwd: root:x:0: + After aa_stack_profile(): + Failure opening /etc/passwd: Permission denied + $ + +=head1 BUGS + +None known. If you find any, please report them at +L. Note that using +aa_stack_profile(2) without execve(2) provides no memory barriers between +different areas of a program; if address space separation is required, then +separate processes should be used. + +=head1 SEE ALSO + +apparmor(7), apparmor.d(5), apparmor_parser(8), aa_change_profile(2), +aa_getcon(2) and L. + +=cut diff --git a/libraries/libapparmor/include/sys/apparmor.h b/libraries/libapparmor/include/sys/apparmor.h index 13a6a8cf0..d3ee13a8b 100644 --- a/libraries/libapparmor/include/sys/apparmor.h +++ b/libraries/libapparmor/include/sys/apparmor.h @@ -66,7 +66,7 @@ extern int aa_is_enabled(void); extern int aa_find_mountpoint(char **mnt); /* Prototypes for self directed domain transitions - * see + * see * Please see the change_hat(2) manpage for information. */ diff --git a/libraries/libapparmor/swig/python/setup.py.in b/libraries/libapparmor/swig/python/setup.py.in index 18358fc1b..32abd46b2 100644 --- a/libraries/libapparmor/swig/python/setup.py.in +++ b/libraries/libapparmor/swig/python/setup.py.in @@ -5,7 +5,7 @@ setup(name = 'LibAppArmor', version = '@VERSION@', author = 'AppArmor Dev Team', author_email = 'apparmor@lists.ubuntu.com', - url = 'http://wiki.apparmor.net', + url = 'https://wiki.apparmor.net', description = 'AppArmor python bindings', download_url = 'https://launchpad.net/apparmor/+download', package_dir = {'LibAppArmor': '@srcdir@'}, diff --git a/parser/README b/parser/README index d001af5ff..acf2f99af 100644 --- a/parser/README +++ b/parser/README @@ -2,7 +2,7 @@ The apparmor_parser allows you to add, replace, and remove AppArmor policy through the use of command line options. The default is to add. `apparmor_parser --help` shows what the command line options are. -You can also find more information at http://wiki.apparmor.net +You can also find more information at https://wiki.apparmor.net Please send all complaints, feature requests, rants about the software, and questions to the apparmor@lists.ubuntu.com mailing list. Bug diff --git a/parser/apparmor.d.pod b/parser/apparmor.d.pod index c5f3645b1..22606636e 100644 --- a/parser/apparmor.d.pod +++ b/parser/apparmor.d.pod @@ -1582,6 +1582,6 @@ negative values match when specifying one or the other. Eg, 'rw' matches when apparmor(7), apparmor_parser(8), aa-complain(1), aa-enforce(1), aa_change_hat(2), mod_apparmor(5), and -L. +L. =cut diff --git a/parser/apparmor.pod b/parser/apparmor.pod index 364420510..e4725d751 100644 --- a/parser/apparmor.pod +++ b/parser/apparmor.pod @@ -165,6 +165,6 @@ apparmor_parser(8), aa_change_hat(2), apparmor.d(5), subdomain.conf(5), aa-autodep(1), clean(1), auditd(8), aa-unconfined(8), aa-enforce(1), aa-complain(1), and -L. +L. =cut diff --git a/parser/apparmor_parser.pod b/parser/apparmor_parser.pod index ebce07d6a..2c2bca5f1 100644 --- a/parser/apparmor_parser.pod +++ b/parser/apparmor_parser.pod @@ -353,6 +353,6 @@ L. =head1 SEE ALSO apparmor(7), apparmor.d(5), subdomain.conf(5), aa_change_hat(2), and -L. +L. =cut diff --git a/parser/subdomain.conf.pod b/parser/subdomain.conf.pod index d8741405e..b38f7488c 100644 --- a/parser/subdomain.conf.pod +++ b/parser/subdomain.conf.pod @@ -101,4 +101,4 @@ L. =head1 SEE ALSO apparmor(7), apparmor_parser(8), and -L. +L. diff --git a/utils/aa-audit.pod b/utils/aa-audit.pod index 8b47f306e..59f15bc45 100644 --- a/utils/aa-audit.pod +++ b/utils/aa-audit.pod @@ -37,6 +37,6 @@ L. =head1 SEE ALSO apparmor(7), apparmor.d(5), aa-enforce(1), aa-complain(1), aa-disable(1), -aa_change_hat(2), and L. +aa_change_hat(2), and L. =cut diff --git a/utils/aa-autodep.pod b/utils/aa-autodep.pod index 06ae2f2b5..25339e0c4 100644 --- a/utils/aa-autodep.pod +++ b/utils/aa-autodep.pod @@ -61,6 +61,6 @@ L. =head1 SEE ALSO apparmor(7), apparmor.d(5), aa-complain(1), aa-enforce(1), aa-disable(1), -aa_change_hat(2), and L. +aa_change_hat(2), and L. =cut diff --git a/utils/aa-cleanprof.pod b/utils/aa-cleanprof.pod index acd4c7afd..15f5bd191 100644 --- a/utils/aa-cleanprof.pod +++ b/utils/aa-cleanprof.pod @@ -37,6 +37,6 @@ L. =head1 SEE ALSO apparmor(7), apparmor.d(5), aa-enforce(1), aa-complain(1), aa-disable(1), -aa_change_hat(2), and L. +aa_change_hat(2), and L. =cut diff --git a/utils/aa-complain.pod b/utils/aa-complain.pod index 5e1058803..ed61fff6c 100644 --- a/utils/aa-complain.pod +++ b/utils/aa-complain.pod @@ -54,6 +54,6 @@ L. =head1 SEE ALSO apparmor(7), apparmor.d(5), aa-enforce(1), aa-disable(1), -aa_change_hat(2), and L. +aa_change_hat(2), and L. =cut diff --git a/utils/aa-disable.pod b/utils/aa-disable.pod index a8f6d744a..c52664fa3 100644 --- a/utils/aa-disable.pod +++ b/utils/aa-disable.pod @@ -54,6 +54,6 @@ L. =head1 SEE ALSO apparmor(7), apparmor.d(5), aa-enforce(1), aa-complain(1), -aa_change_hat(2), and L. +aa_change_hat(2), and L. =cut diff --git a/utils/aa-enforce.pod b/utils/aa-enforce.pod index 236acf22f..0fc8e5921 100644 --- a/utils/aa-enforce.pod +++ b/utils/aa-enforce.pod @@ -56,6 +56,6 @@ L. =head1 SEE ALSO apparmor(7), apparmor.d(5), aa-complain(1), aa-disable(1), -aa_change_hat(2), and L. +aa_change_hat(2), and L. =cut diff --git a/utils/aa-exec.pod b/utils/aa-exec.pod index 58dedb22d..b7e06cc5c 100644 --- a/utils/aa-exec.pod +++ b/utils/aa-exec.pod @@ -92,6 +92,6 @@ L. =head1 SEE ALSO aa-stack(8), aa-namespace(8), apparmor(7), apparmor.d(5), aa_change_profile(3), -aa_change_onexec(3) and L. +aa_change_onexec(3) and L. =cut diff --git a/utils/aa-genprof.pod b/utils/aa-genprof.pod index beda6d627..217f2d571 100644 --- a/utils/aa-genprof.pod +++ b/utils/aa-genprof.pod @@ -87,6 +87,6 @@ L. apparmor(7), apparmor.d(5), aa-enforce(1), aa-complain(1), aa-disable(1), aa_change_hat(2), aa-logprof(1), logprof.conf(5), and -L. +L. =cut diff --git a/utils/aa-logprof.pod b/utils/aa-logprof.pod index 621bd38fc..36e9f1fb8 100644 --- a/utils/aa-logprof.pod +++ b/utils/aa-logprof.pod @@ -171,6 +171,6 @@ L. klogd(8), auditd(8), apparmor(7), apparmor.d(5), aa_change_hat(2), logprof.conf(5), aa-genprof(1), aa-enforce(1), aa-complain(1), -aa-disable(1), and L. +aa-disable(1), and L. =cut diff --git a/utils/aa-mergeprof.pod b/utils/aa-mergeprof.pod index 43124371f..d7d9c6549 100644 --- a/utils/aa-mergeprof.pod +++ b/utils/aa-mergeprof.pod @@ -32,6 +32,6 @@ L. apparmor(7), apparmor.d(5), aa_change_hat(2), aa-genprof(1), aa-logprof(1), aa-enforce(1), aa-audit(1), aa-complain(1), -aa-disable(1), and L. +aa-disable(1), and L. =cut diff --git a/utils/aa-status.pod b/utils/aa-status.pod index 3a63e394e..113327fb6 100644 --- a/utils/aa-status.pod +++ b/utils/aa-status.pod @@ -121,6 +121,6 @@ L. =head1 SEE ALSO apparmor(7), apparmor.d(5), and -L. +L. =cut diff --git a/utils/aa-unconfined.pod b/utils/aa-unconfined.pod index aaf8e4740..7a0056e11 100644 --- a/utils/aa-unconfined.pod +++ b/utils/aa-unconfined.pod @@ -58,7 +58,7 @@ L. =head1 SEE ALSO -netstat(8), apparmor(7), apparmor.d(5), aa_change_hat(2), and -L. +ss(8), netstat(8), apparmor(7), apparmor.d(5), aa_change_hat(2), and +L. =cut diff --git a/utils/logprof.conf.pod b/utils/logprof.conf.pod index b50c138dd..3e549aecb 100644 --- a/utils/logprof.conf.pod +++ b/utils/logprof.conf.pod @@ -109,6 +109,6 @@ L. apparmor(7), apparmor.d(5), aa-enforce(1), aa-complain(1), aa-disable(1), aa_change_hat(2), aa-logprof(1), aa-genprof(1), and -L. +L. =cut diff --git a/utils/po/Makefile b/utils/po/Makefile index 3a9c170c3..78dc8b833 100644 --- a/utils/po/Makefile +++ b/utils/po/Makefile @@ -24,3 +24,14 @@ COMMONDIR=../../common include $(COMMONDIR)/Make-po.rules XGETTEXT_ARGS+=--language=perl --language=python + +=head1 BUGS + +If you find any bugs, please report them at +L. + +=head1 SEE ALSO + +apparmor(7), apparmor.d(5), and L. + +=cut diff --git a/utils/vim/apparmor.vim.pod b/utils/vim/apparmor.vim.pod index 0c482f1ef..09f55721a 100644 --- a/utils/vim/apparmor.vim.pod +++ b/utils/vim/apparmor.vim.pod @@ -53,6 +53,6 @@ L. =head1 SEE ALSO vim(1), apparmor(7), apparmor.d(5), aa_change_hat(2), and -L. +L. =cut