[apparmor] [PATCH 05/14] Fix: variable expansion for link target
Tyler Hicks
tyhicks at canonical.com
Thu Jun 4 14:17:08 UTC 2015
On 2015-06-04 03:56:34, John Johansen wrote:
> link rules with a variable in the link target, eg.
> link /foo -> @{var},
>
> do not currently have the variable expanded
>
> Signed-off-by: John Johansen <john.johansen at canonical.com>
Acked-by: Tyler Hicks <tyhicks at canonical.com>
> ---
> parser/parser_variable.c | 5 +++++
> parser/tst/simple_tests/file/var1_ok_audit_deny_link.sd | 10 ++++++++++
> parser/tst/simple_tests/file/var1_ok_deny_link.sd | 10 ++++++++++
> parser/tst/simple_tests/file/var1_ok_link_1.sd | 11 +++++++++++
> parser/tst/simple_tests/file/var1_ok_link_2.sd | 11 +++++++++++
> parser/tst/simple_tests/file/var1_ok_link_3.sd | 11 +++++++++++
> parser/tst/simple_tests/file/var1_src_ok_audit_deny_link.sd | 10 ++++++++++
> parser/tst/simple_tests/file/var1_src_ok_deny_link.sd | 10 ++++++++++
> parser/tst/simple_tests/file/var1_src_ok_link_1.sd | 11 +++++++++++
> parser/tst/simple_tests/file/var1_src_ok_link_2.sd | 11 +++++++++++
> parser/tst/simple_tests/file/var1_src_ok_link_3.sd | 11 +++++++++++
> .../tst/simple_tests/file/var1_target_ok_audit_deny_link.sd | 10 ++++++++++
> parser/tst/simple_tests/file/var1_target_ok_deny_link.sd | 10 ++++++++++
> parser/tst/simple_tests/file/var1_target_ok_link_1.sd | 11 +++++++++++
> parser/tst/simple_tests/file/var1_target_ok_link_2.sd | 11 +++++++++++
> parser/tst/simple_tests/file/var1_target_ok_link_3.sd | 11 +++++++++++
> parser/tst/simple_tests/file/var2_ok_audit_deny_link.sd | 10 ++++++++++
> parser/tst/simple_tests/file/var2_ok_deny_link.sd | 10 ++++++++++
> parser/tst/simple_tests/file/var2_ok_link_1.sd | 11 +++++++++++
> parser/tst/simple_tests/file/var2_ok_link_2.sd | 11 +++++++++++
> parser/tst/simple_tests/file/var2_ok_link_3.sd | 11 +++++++++++
> parser/tst/simple_tests/file/var2_src_ok_audit_deny_link.sd | 10 ++++++++++
> parser/tst/simple_tests/file/var2_src_ok_deny_link.sd | 10 ++++++++++
> parser/tst/simple_tests/file/var2_src_ok_link_1.sd | 11 +++++++++++
> parser/tst/simple_tests/file/var2_src_ok_link_2.sd | 11 +++++++++++
> parser/tst/simple_tests/file/var2_src_ok_link_3.sd | 11 +++++++++++
> .../tst/simple_tests/file/var2_target_ok_audit_deny_link.sd | 10 ++++++++++
> parser/tst/simple_tests/file/var2_target_ok_deny_link.sd | 10 ++++++++++
> parser/tst/simple_tests/file/var2_target_ok_link_1.sd | 11 +++++++++++
> parser/tst/simple_tests/file/var2_target_ok_link_2.sd | 11 +++++++++++
> parser/tst/simple_tests/file/var2_target_ok_link_3.sd | 11 +++++++++++
> 31 files changed, 323 insertions(+)
> create mode 100644 parser/tst/simple_tests/file/var1_ok_audit_deny_link.sd
> create mode 100644 parser/tst/simple_tests/file/var1_ok_deny_link.sd
> create mode 100644 parser/tst/simple_tests/file/var1_ok_link_1.sd
> create mode 100644 parser/tst/simple_tests/file/var1_ok_link_2.sd
> create mode 100644 parser/tst/simple_tests/file/var1_ok_link_3.sd
> create mode 100644 parser/tst/simple_tests/file/var1_src_ok_audit_deny_link.sd
> create mode 100644 parser/tst/simple_tests/file/var1_src_ok_deny_link.sd
> create mode 100644 parser/tst/simple_tests/file/var1_src_ok_link_1.sd
> create mode 100644 parser/tst/simple_tests/file/var1_src_ok_link_2.sd
> create mode 100644 parser/tst/simple_tests/file/var1_src_ok_link_3.sd
> create mode 100644 parser/tst/simple_tests/file/var1_target_ok_audit_deny_link.sd
> create mode 100644 parser/tst/simple_tests/file/var1_target_ok_deny_link.sd
> create mode 100644 parser/tst/simple_tests/file/var1_target_ok_link_1.sd
> create mode 100644 parser/tst/simple_tests/file/var1_target_ok_link_2.sd
> create mode 100644 parser/tst/simple_tests/file/var1_target_ok_link_3.sd
> create mode 100644 parser/tst/simple_tests/file/var2_ok_audit_deny_link.sd
> create mode 100644 parser/tst/simple_tests/file/var2_ok_deny_link.sd
> create mode 100644 parser/tst/simple_tests/file/var2_ok_link_1.sd
> create mode 100644 parser/tst/simple_tests/file/var2_ok_link_2.sd
> create mode 100644 parser/tst/simple_tests/file/var2_ok_link_3.sd
> create mode 100644 parser/tst/simple_tests/file/var2_src_ok_audit_deny_link.sd
> create mode 100644 parser/tst/simple_tests/file/var2_src_ok_deny_link.sd
> create mode 100644 parser/tst/simple_tests/file/var2_src_ok_link_1.sd
> create mode 100644 parser/tst/simple_tests/file/var2_src_ok_link_2.sd
> create mode 100644 parser/tst/simple_tests/file/var2_src_ok_link_3.sd
> create mode 100644 parser/tst/simple_tests/file/var2_target_ok_audit_deny_link.sd
> create mode 100644 parser/tst/simple_tests/file/var2_target_ok_deny_link.sd
> create mode 100644 parser/tst/simple_tests/file/var2_target_ok_link_1.sd
> create mode 100644 parser/tst/simple_tests/file/var2_target_ok_link_2.sd
> create mode 100644 parser/tst/simple_tests/file/var2_target_ok_link_3.sd
>
> diff --git a/parser/parser_variable.c b/parser/parser_variable.c
> index e1f6543..ac334dc 100644
> --- a/parser/parser_variable.c
> +++ b/parser/parser_variable.c
> @@ -254,6 +254,11 @@ static int process_variables_in_entries(struct cod_entry *entry_list)
> error = expand_entry_variables(&entry->name);
> if (error)
> return error;
> + if (entry->link_name) {
> + error = expand_entry_variables(&entry->link_name);
> + if (error)
> + return error;
> + }
> }
>
> return 0;
> diff --git a/parser/tst/simple_tests/file/var1_ok_audit_deny_link.sd b/parser/tst/simple_tests/file/var1_ok_audit_deny_link.sd
> new file mode 100644
> index 0000000..e806a20
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var1_ok_audit_deny_link.sd
> @@ -0,0 +1,10 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + audit deny link @{var} -> @{var},
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var1_ok_deny_link.sd b/parser/tst/simple_tests/file/var1_ok_deny_link.sd
> new file mode 100644
> index 0000000..8074a4e
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var1_ok_deny_link.sd
> @@ -0,0 +1,10 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + deny link @{var} -> @{var},
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var1_ok_link_1.sd b/parser/tst/simple_tests/file/var1_ok_link_1.sd
> new file mode 100644
> index 0000000..9ea1db0
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var1_ok_link_1.sd
> @@ -0,0 +1,11 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + @{var} rl,
> + /gamma/* rwl,
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var1_ok_link_2.sd b/parser/tst/simple_tests/file/var1_ok_link_2.sd
> new file mode 100644
> index 0000000..fae61f6
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var1_ok_link_2.sd
> @@ -0,0 +1,11 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + link @{var} -> @{var},
> + @{var} r,
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var1_ok_link_3.sd b/parser/tst/simple_tests/file/var1_ok_link_3.sd
> new file mode 100644
> index 0000000..3dccf98
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var1_ok_link_3.sd
> @@ -0,0 +1,11 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + link subset @{var} -> @{var},
> + @{var} r,
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var1_src_ok_audit_deny_link.sd b/parser/tst/simple_tests/file/var1_src_ok_audit_deny_link.sd
> new file mode 100644
> index 0000000..03f2600
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var1_src_ok_audit_deny_link.sd
> @@ -0,0 +1,10 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + audit deny link @{var} -> /tmp/**,
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var1_src_ok_deny_link.sd b/parser/tst/simple_tests/file/var1_src_ok_deny_link.sd
> new file mode 100644
> index 0000000..063c6ed
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var1_src_ok_deny_link.sd
> @@ -0,0 +1,10 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + deny link @{var} -> /tmp/**,
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var1_src_ok_link_1.sd b/parser/tst/simple_tests/file/var1_src_ok_link_1.sd
> new file mode 100644
> index 0000000..9ea1db0
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var1_src_ok_link_1.sd
> @@ -0,0 +1,11 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + @{var} rl,
> + /gamma/* rwl,
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var1_src_ok_link_2.sd b/parser/tst/simple_tests/file/var1_src_ok_link_2.sd
> new file mode 100644
> index 0000000..d02822c
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var1_src_ok_link_2.sd
> @@ -0,0 +1,11 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + link @{var} -> /tmp/**,
> + /tmp/** r,
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var1_src_ok_link_3.sd b/parser/tst/simple_tests/file/var1_src_ok_link_3.sd
> new file mode 100644
> index 0000000..c48af60
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var1_src_ok_link_3.sd
> @@ -0,0 +1,11 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + link subset @{var} -> /tmp/**,
> + /tmp/** r,
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var1_target_ok_audit_deny_link.sd b/parser/tst/simple_tests/file/var1_target_ok_audit_deny_link.sd
> new file mode 100644
> index 0000000..9c5a08c
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var1_target_ok_audit_deny_link.sd
> @@ -0,0 +1,10 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + audit deny link /alpha/beta -> @{var},
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var1_target_ok_deny_link.sd b/parser/tst/simple_tests/file/var1_target_ok_deny_link.sd
> new file mode 100644
> index 0000000..03c4bb6
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var1_target_ok_deny_link.sd
> @@ -0,0 +1,10 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + deny link /alpha/beta -> @{var},
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var1_target_ok_link_1.sd b/parser/tst/simple_tests/file/var1_target_ok_link_1.sd
> new file mode 100644
> index 0000000..7841cb3
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var1_target_ok_link_1.sd
> @@ -0,0 +1,11 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + /alpha/beta rl,
> + /gamma/* rwl,
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var1_target_ok_link_2.sd b/parser/tst/simple_tests/file/var1_target_ok_link_2.sd
> new file mode 100644
> index 0000000..219a56e
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var1_target_ok_link_2.sd
> @@ -0,0 +1,11 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + link /alpha/beta -> @{var},
> + @{var} r,
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var1_target_ok_link_3.sd b/parser/tst/simple_tests/file/var1_target_ok_link_3.sd
> new file mode 100644
> index 0000000..aecf731
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var1_target_ok_link_3.sd
> @@ -0,0 +1,11 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + link subset /alpha/beta -> @{var},
> + @{var} r,
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var2_ok_audit_deny_link.sd b/parser/tst/simple_tests/file/var2_ok_audit_deny_link.sd
> new file mode 100644
> index 0000000..3f7211b
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var2_ok_audit_deny_link.sd
> @@ -0,0 +1,10 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + audit deny link /foo@{var} -> /foo@{var},
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var2_ok_deny_link.sd b/parser/tst/simple_tests/file/var2_ok_deny_link.sd
> new file mode 100644
> index 0000000..eed94b9
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var2_ok_deny_link.sd
> @@ -0,0 +1,10 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + deny link /foo@{var} -> /foo@{var},
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var2_ok_link_1.sd b/parser/tst/simple_tests/file/var2_ok_link_1.sd
> new file mode 100644
> index 0000000..fe1b2dc
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var2_ok_link_1.sd
> @@ -0,0 +1,11 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + /foo@{var} rl,
> + /gamma/* rwl,
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var2_ok_link_2.sd b/parser/tst/simple_tests/file/var2_ok_link_2.sd
> new file mode 100644
> index 0000000..7d496b9
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var2_ok_link_2.sd
> @@ -0,0 +1,11 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + link /foo@{var} -> /foo@{var},
> + /foo@{var} r,
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var2_ok_link_3.sd b/parser/tst/simple_tests/file/var2_ok_link_3.sd
> new file mode 100644
> index 0000000..026b8aa
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var2_ok_link_3.sd
> @@ -0,0 +1,11 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + link subset /foo@{var} -> /foo@{var},
> + /foo@{var} r,
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var2_src_ok_audit_deny_link.sd b/parser/tst/simple_tests/file/var2_src_ok_audit_deny_link.sd
> new file mode 100644
> index 0000000..2d880b1
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var2_src_ok_audit_deny_link.sd
> @@ -0,0 +1,10 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + audit deny link /foo@{var} -> /tmp/**,
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var2_src_ok_deny_link.sd b/parser/tst/simple_tests/file/var2_src_ok_deny_link.sd
> new file mode 100644
> index 0000000..a6c4bac
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var2_src_ok_deny_link.sd
> @@ -0,0 +1,10 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + deny link /foo@{var} -> /tmp/**,
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var2_src_ok_link_1.sd b/parser/tst/simple_tests/file/var2_src_ok_link_1.sd
> new file mode 100644
> index 0000000..fe1b2dc
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var2_src_ok_link_1.sd
> @@ -0,0 +1,11 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + /foo@{var} rl,
> + /gamma/* rwl,
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var2_src_ok_link_2.sd b/parser/tst/simple_tests/file/var2_src_ok_link_2.sd
> new file mode 100644
> index 0000000..5bc6ef8
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var2_src_ok_link_2.sd
> @@ -0,0 +1,11 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + link /foo@{var} -> /tmp/**,
> + /tmp/** r,
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var2_src_ok_link_3.sd b/parser/tst/simple_tests/file/var2_src_ok_link_3.sd
> new file mode 100644
> index 0000000..0bdd95f
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var2_src_ok_link_3.sd
> @@ -0,0 +1,11 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + link subset /foo@{var} -> /tmp/**,
> + /tmp/** r,
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var2_target_ok_audit_deny_link.sd b/parser/tst/simple_tests/file/var2_target_ok_audit_deny_link.sd
> new file mode 100644
> index 0000000..675c3e8
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var2_target_ok_audit_deny_link.sd
> @@ -0,0 +1,10 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + audit deny link /alpha/beta -> /foo@{var},
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var2_target_ok_deny_link.sd b/parser/tst/simple_tests/file/var2_target_ok_deny_link.sd
> new file mode 100644
> index 0000000..8332124
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var2_target_ok_deny_link.sd
> @@ -0,0 +1,10 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + deny link /alpha/beta -> /foo@{var},
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var2_target_ok_link_1.sd b/parser/tst/simple_tests/file/var2_target_ok_link_1.sd
> new file mode 100644
> index 0000000..7841cb3
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var2_target_ok_link_1.sd
> @@ -0,0 +1,11 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + /alpha/beta rl,
> + /gamma/* rwl,
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var2_target_ok_link_2.sd b/parser/tst/simple_tests/file/var2_target_ok_link_2.sd
> new file mode 100644
> index 0000000..5ca93a7
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var2_target_ok_link_2.sd
> @@ -0,0 +1,11 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + link /alpha/beta -> /foo@{var},
> + /foo@{var} r,
> +}
> +
> diff --git a/parser/tst/simple_tests/file/var2_target_ok_link_3.sd b/parser/tst/simple_tests/file/var2_target_ok_link_3.sd
> new file mode 100644
> index 0000000..db36600
> --- /dev/null
> +++ b/parser/tst/simple_tests/file/var2_target_ok_link_3.sd
> @@ -0,0 +1,11 @@
> +#
> +#=DESCRIPTION simple link access test
> +#=EXRESULT PASS
> +#
> +
> +@{var}=/test
> +profile test {
> + link subset /alpha/beta -> /foo@{var},
> + /foo@{var} r,
> +}
> +
> --
> 2.1.4
>
>
> --
> AppArmor mailing list
> AppArmor at lists.ubuntu.com
> Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/apparmor
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <https://lists.ubuntu.com/archives/apparmor/attachments/20150604/14418137/attachment.pgp>
More information about the AppArmor
mailing list