nixos/oci-containers: escape login.username

When using e.g. GitLab as container registry, the token name may be the
username. However, the token name can contain special characters
including spaces breaking the registry login like this:

    Apr 25 15:35:48 test42 pre-start[294091]: image doesn't exist locally and login failed
    Apr 25 15:35:52 test42 pre-start[294289]: Error: accepts at most 1 arg(s), received 2
    Apr 25 15:35:52 test42 pre-start[294297]: Error: registry.example.com/foo/bar/baz: image not known

Applying `escapeShellArg` on it fixes the problem.
This commit is contained in:
Maximilian Bosch 2025-04-25 15:39:00 +02:00
parent 829696aa57
commit 9cd14670ad
No known key found for this signature in database
GPG key ID: 797C8FD26F815B0E

View file

@ -416,7 +416,7 @@ let
# try logging in, if it fails, check if image exists locally
${cfg.backend} login \
${container.login.registry} \
--username ${container.login.username} \
--username ${escapeShellArg container.login.username} \
--password-stdin < ${container.login.passwordFile} \
|| ${cfg.backend} image inspect ${container.image} >/dev/null \
|| { echo "image doesn't exist locally and login failed" >&2 ; exit 1; }