libpod: do not parse --hostuser in base 8

fix the parsing of --hostuser to treat the input in base 10.

Closes: https://github.com/containers/podman/issues/19800

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
Giuseppe Scrivano
2023-08-31 10:46:01 +02:00
parent e73e585f5d
commit 702709a916
2 changed files with 13 additions and 2 deletions

View File

@ -821,12 +821,12 @@ func lookupHostUser(name string) (*runcuser.ExecUser, error) {
if err != nil {
return &execUser, err
}
uid, err := strconv.ParseUint(u.Uid, 8, 32)
uid, err := strconv.ParseUint(u.Uid, 10, 32)
if err != nil {
return &execUser, err
}
gid, err := strconv.ParseUint(u.Gid, 8, 32)
gid, err := strconv.ParseUint(u.Gid, 10, 32)
if err != nil {
return &execUser, err
}

View File

@ -786,6 +786,17 @@ EOF
user=$(id -un)
run_podman 1 run --rm $IMAGE grep $user /etc/passwd
run_podman run --hostuser=$user --rm $IMAGE grep $user /etc/passwd
# find a user with a uid > 100 that is a valid octal
# Issue #19800
octal_user=$(awk -F\: '$1!="nobody" && $3>100 && $3~/^[0-7]+$/ {print $1 " " $3; exit}' /etc/passwd)
# test only if a valid user was found
if test -n "$octal_user"; then
read octal_username octal_userid <<< $octal_user
run_podman run --user=$octal_username --hostuser=$octal_username --rm $IMAGE id -u
is "$output" "$octal_userid"
fi
user=$(id -u)
run_podman run --hostuser=$user --rm $IMAGE grep $user /etc/passwd
run_podman run --hostuser=$user --user $user --rm $IMAGE grep $user /etc/passwd