mirror of
https://gitlab.com/apparmor/apparmor
synced 2025-09-04 16:25:10 +00:00
Fix apparmor_parser when removing a profile from an alternate namespace
The module interface calls for names with namespaces to be in the format of :namespace:profile or :namespace://profile but the parser was generating namespace:profile causing profile lookup to fail, or removal of the wrong profile as it was done against the current namespace, instead of the specified namespace Signed-off-by: John Johansen <john.johansen@canonical.com> Acked-by: Kees Cook <kees@ubuntu.com>
This commit is contained in:
@@ -763,10 +763,10 @@ int sd_serialize_codomain(int option, struct codomain *cod)
|
|||||||
int len = 0;
|
int len = 0;
|
||||||
|
|
||||||
if (profile_namespace) {
|
if (profile_namespace) {
|
||||||
len += strlen(profile_namespace) + 1;
|
len += strlen(profile_namespace) + 2;
|
||||||
ns = profile_namespace;
|
ns = profile_namespace;
|
||||||
} else if (cod->namespace) {
|
} else if (cod->namespace) {
|
||||||
len += strlen(cod->namespace) + 1;
|
len += strlen(cod->namespace) + 2;
|
||||||
ns = cod->namespace;
|
ns = cod->namespace;
|
||||||
}
|
}
|
||||||
if (cod->parent) {
|
if (cod->parent) {
|
||||||
@@ -778,7 +778,7 @@ int sd_serialize_codomain(int option, struct codomain *cod)
|
|||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
if (ns)
|
if (ns)
|
||||||
sprintf(name, "%s:%s//%s", ns,
|
sprintf(name, ":%s:%s//%s", ns,
|
||||||
cod->parent->name, cod->name);
|
cod->parent->name, cod->name);
|
||||||
else
|
else
|
||||||
sprintf(name, "%s//%s", cod->parent->name,
|
sprintf(name, "%s//%s", cod->parent->name,
|
||||||
@@ -790,7 +790,7 @@ int sd_serialize_codomain(int option, struct codomain *cod)
|
|||||||
error = -errno;
|
error = -errno;
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
sprintf(name, "%s:%s", ns, cod->name);
|
sprintf(name, ":%s:%s", ns, cod->name);
|
||||||
} else {
|
} else {
|
||||||
name = cod->name;
|
name = cod->name;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user