diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-10-11 00:38:06 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-10-11 00:38:06 +0900 |
| commit | 23084888a028aec7e75a73c5912331cc60391297 (patch) | |
| tree | 8f25b338feafa8ff92ac210a3a19f7d7d10391a3 | |
| parent | 50f6fcb326f81570f12074befa0861a251e9ed5a (diff) | |
internal/app/spaccount: apply default in shim
The original code clobbers hst.Config, and was not changed when being ported over.
Signed-off-by: Ophestra <cat@gensokyo.uk>
| -rw-r--r-- | internal/app/spaccount.go | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/internal/app/spaccount.go b/internal/app/spaccount.go index 66633d4f..7da54366 100644 --- a/internal/app/spaccount.go +++ b/internal/app/spaccount.go @@ -14,30 +14,35 @@ func init() { gob.Register(spAccountOp{}) } type spAccountOp struct{} func (s spAccountOp) toSystem(state *outcomeStateSys) error { - const fallbackUsername = "chronos" - // do checks here to fail before fork/exec if state.Container == nil || state.Container.Home == nil || state.Container.Shell == nil { // unreachable return syscall.ENOTRECOVERABLE } - if state.Container.Username == "" { - state.Container.Username = fallbackUsername - } else if !isValidUsername(state.Container.Username) { + + // default is applied in toContainer + if state.Container.Username != "" && !isValidUsername(state.Container.Username) { return newWithMessage(fmt.Sprintf("invalid user name %q", state.Container.Username)) } return nil } func (s spAccountOp) toContainer(state *outcomeStateParams) error { + const fallbackUsername = "chronos" + + username := state.Container.Username + if username == "" { + username = fallbackUsername + } + state.params.Dir = state.Container.Home state.env["HOME"] = state.Container.Home.String() - state.env["USER"] = state.Container.Username + state.env["USER"] = username state.env["SHELL"] = state.Container.Shell.String() state.params. Place(fhs.AbsEtc.Append("passwd"), - []byte(state.Container.Username+":x:"+ + []byte(username+":x:"+ state.mapuid.String()+":"+ state.mapgid.String()+ ":Hakurei:"+ |
