apparmor: fix invalid reference on profile->disconnected
profile->disconnected was storing an invalid reference to the
disconnected path. Fix it by duplicating the string using
aa_unpack_strdup and freeing accordingly.
Fixes: 72c8a76864
("apparmor: allow profiles to provide info to disconnected paths")
Signed-off-by: Georgia Garcia <georgia.garcia@canonical.com>
Signed-off-by: John Johansen <john.johansen@canonical.com>
This commit is contained in:
parent
efea5b0dcc
commit
8884ba0778
|
@ -255,6 +255,7 @@ void aa_free_profile(struct aa_profile *profile)
|
|||
|
||||
aa_put_ns(profile->ns);
|
||||
kfree_sensitive(profile->rename);
|
||||
kfree_sensitive(profile->disconnected);
|
||||
|
||||
free_attachment(&profile->attach);
|
||||
|
||||
|
|
|
@ -804,7 +804,7 @@ static struct aa_profile *unpack_profile(struct aa_ext *e, char **ns_name)
|
|||
const char *info = "failed to unpack profile";
|
||||
size_t ns_len;
|
||||
struct rhashtable_params params = { 0 };
|
||||
char *key = NULL;
|
||||
char *key = NULL, *disconnected = NULL;
|
||||
struct aa_data *data;
|
||||
int error = -EPROTO;
|
||||
kernel_cap_t tmpcap;
|
||||
|
@ -870,7 +870,8 @@ static struct aa_profile *unpack_profile(struct aa_ext *e, char **ns_name)
|
|||
}
|
||||
|
||||
/* disconnected attachment string is optional */
|
||||
(void) aa_unpack_str(e, &profile->disconnected, "disconnected");
|
||||
(void) aa_unpack_strdup(e, &disconnected, "disconnected");
|
||||
profile->disconnected = disconnected;
|
||||
|
||||
/* per profile debug flags (complain, audit) */
|
||||
if (!aa_unpack_nameX(e, AA_STRUCT, "flags")) {
|
||||
|
|
Loading…
Reference in New Issue