Skip to content

Commit

Permalink
libpod: do not parse --hostuser in base 8
Browse files Browse the repository at this point in the history
fix the parsing of --hostuser to treat the input in base 10.

Closes: #19800

Signed-off-by: Giuseppe Scrivano <[email protected]>
  • Loading branch information
giuseppe committed Aug 31, 2023
1 parent e73e585 commit 702709a
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 2 deletions.
4 changes: 2 additions & 2 deletions libpod/container_internal_common.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
11 changes: 11 additions & 0 deletions test/system/030-run.bats
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 702709a

Please sign in to comment.