• Xiyu Yang's avatar
    apparmor: Fix aa_label refcnt leak in policy_update · c6b39f07
    Xiyu Yang authored
    policy_update() invokes begin_current_label_crit_section(), which
    returns a reference of the updated aa_label object to "label" with
    increased refcount.
    
    When policy_update() returns, "label" becomes invalid, so the refcount
    should be decreased to keep refcount balanced.
    
    The reference counting issue happens in one exception handling path of
    policy_update(). When aa_may_manage_policy() returns not NULL, the
    refcnt increased by begin_current_label_crit_section() is not decreased,
    causing a refcnt leak.
    
    Fix this issue by jumping to "end_section" label when
    aa_may_manage_policy() returns not NULL.
    
    Fixes: 5ac8c355 ("apparmor: allow introspecting the loaded policy pre internal transform")
    Signed-off-by: default avatarXiyu Yang <xiyuyang19@fudan.edu.cn>
    Signed-off-by: default avatarXin Tan <tanxin.ctf@gmail.com>
    Signed-off-by: default avatarJohn Johansen <john.johansen@canonical.com>
    c6b39f07
apparmorfs.c 65.3 KB