From 4c488e7517a670171d25d59583a0f37442327ca2 Mon Sep 17 00:00:00 2001 From: albertony <12441419+albertony@users.noreply.github.com> Date: Thu, 15 Aug 2024 20:29:24 +0200 Subject: [PATCH] serve docker: fix incorrect conversion between integer types --- cmd/serve/docker/options.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/cmd/serve/docker/options.go b/cmd/serve/docker/options.go index ef598ebb0..9779828f8 100644 --- a/cmd/serve/docker/options.go +++ b/cmd/serve/docker/options.go @@ -2,6 +2,7 @@ package docker import ( "fmt" + "math" "strings" "github.com/rclone/rclone/cmd/mountlib" @@ -272,10 +273,22 @@ func getVFSOption(vfsOpt *vfscommon.Options, opt rc.Params, key string) (ok bool err = getFVarP(&vfsOpt.Umask, opt, key) case "uid": intVal, err = opt.GetInt64(key) - vfsOpt.UID = uint32(intVal) + if err == nil { + if intVal >= 0 && intVal <= math.MaxUint32 { + vfsOpt.UID = uint32(intVal) + } else { + err = fmt.Errorf("key %q (%v) overflows uint32", key, intVal) + } + } case "gid": intVal, err = opt.GetInt64(key) - vfsOpt.GID = uint32(intVal) + if err == nil { + if intVal >= 0 && intVal <= math.MaxUint32 { + vfsOpt.UID = uint32(intVal) + } else { + err = fmt.Errorf("key %q (%v) overflows uint32", key, intVal) + } + } // non-vfs options default: