apparmor: fix ptrace label match when matching stacked labels
authorJohn Johansen <john.johansen@canonical.com>
Sat, 9 Dec 2017 01:43:18 +0000 (17:43 -0800)
committerJohn Johansen <john.johansen@canonical.com>
Fri, 12 Jan 2018 23:49:59 +0000 (15:49 -0800)
commit0dda0b3fb255048a221f736c8a2a24c674da8bf3
tree2e608fa9c885466ab5d833bcbaff76620ada5db9
parentc92a9a461dff6140c539c61e457aa97df29517d6
apparmor: fix ptrace label match when matching stacked labels

Given a label with a profile stack of
  A//&B or A//&C ...

A ptrace rule should be able to specify a generic trace pattern with
a rule like

  ptrace trace A//&**,

however this is failing because while the correct label match routine
is called, it is being done post label decomposition so it is always
being done against a profile instead of the stacked label.

To fix this refactor the cross check to pass the full peer label in to
the label_match.

Fixes: 290f458a4f16 ("apparmor: allow ptrace checks to be finer grained than just capability")
Cc: Stable <stable@vger.kernel.org>
Reported-by: Matthew Garrett <mjg59@google.com>
Tested-by: Matthew Garrett <mjg59@google.com>
Signed-off-by: John Johansen <john.johansen@canonical.com>
security/apparmor/include/perms.h
security/apparmor/ipc.c