Commit 8884ba07 authored by Georgia Garcia's avatar Georgia Garcia Committed by John Johansen
Browse files

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: 72c8a768 ("apparmor: allow profiles to provide info to disconnected paths")
Signed-off-by: default avatarGeorgia Garcia <georgia.garcia@canonical.com>
Signed-off-by: default avatarJohn Johansen <john.johansen@canonical.com>
parent efea5b0d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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);

+3 −2
Original line number Diff line number Diff line
@@ -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")) {