apparmor: Fix decompression of rawdata for read back to userspace
authorJohn Johansen <john.johansen@canonical.com>
Thu, 29 Sep 2022 13:48:10 +0000 (06:48 -0700)
committerJohn Johansen <john.johansen@canonical.com>
Mon, 3 Oct 2022 21:49:04 +0000 (14:49 -0700)
commita2f31df06b7aa1769f12ec6f9ae7f18e78582cad
tree64e36b139b1621471e8a958ae813e8a6ccb4acf5
parent70f24a9f9084b7fffd95daa707cce8e339b189dd
apparmor: Fix decompression of rawdata for read back to userspace

The rawdata readback has a few of problems. First if compression is
enabled when the data is read then the compressed data is read out
instead decompressing the data. Second if compression of the data
fails, the code does not handle holding onto the raw_data in
uncompressed form. Third if the compression is enabled/disabled after
the rawdata was loaded, the check against the global control of
whether to use compression does not reflect what was already done to
the data.

Fix these by always storing the compressed size, along with the
original data size even if compression fails or is not used. And use
this to detect whether the rawdata is actually compressed.

Fixes: 52ccc20c652b ("apparmor: use zstd compression for profile data")
Signed-off-by: John Johansen <john.johansen@canonical.com>
Acked-by: Jon Tourville <jon.tourville@canonical.com>
security/apparmor/apparmorfs.c
security/apparmor/policy_unpack.c