portable: do not apply extension image policy if not attaching image

Image policy is only for images, so skip for other types

Follow-up for d059615492
This commit is contained in:
Luca Boccassi
2026-02-12 23:20:47 +00:00
parent d07aa23c87
commit 03f6a8b9d9
2 changed files with 17 additions and 1 deletions
+1 -1
View File
@@ -1475,7 +1475,7 @@ static int install_chroot_dropin(
"LogExtraFields=PORTABLE_EXTENSION=", extension_base_name, "\n"))
return -ENOMEM;
if (pinned_ext_image_policy) {
if (pinned_ext_image_policy && !IN_SET(ext->type, IMAGE_DIRECTORY, IMAGE_SUBVOLUME)) {
_cleanup_free_ char *policy_str = NULL;
r = image_policy_to_string(pinned_ext_image_policy, /* simplify= */ true, &policy_str);
+16
View File
@@ -249,3 +249,19 @@ status="$(portablectl is-attached --extension app1 minimal_0)"
[[ "${status}" == "attached-runtime" ]]
portablectl detach --runtime --extension /tmp/app1.raw /usr/share/minimal_0.raw app
# Ensure that when mixing directory and image extensions, ExtensionImagePolicy= is only
# applied to image extensions and not to directory extensions
mkdir -p /tmp/app1
mount /tmp/app1.raw /tmp/app1
portablectl "${ARGS[@]}" attach --copy=symlink --now --runtime --extension /tmp/app1 --extension /tmp/app0.raw /usr/share/minimal_0.raw app0
systemctl is-active app0.service
grep -q -F "ExtensionDirectories=/tmp/app1" /run/systemd/system.attached/app0.service.d/20-portable.conf
grep -q -F "ExtensionImages=/tmp/app0.raw" /run/systemd/system.attached/app0.service.d/20-portable.conf
# ExtensionImagePolicy= should appear exactly once (for the image, not the directory)
[[ "$(grep -c -F "ExtensionImagePolicy=" /run/systemd/system.attached/app0.service.d/20-portable.conf)" == "1" ]]
portablectl detach --now --runtime --extension /tmp/app1 --extension /tmp/app0.raw /usr/share/minimal_0.raw app0
umount -l /tmp/app1