diff options
| author | Ophestra Umiker <cat@ophivana.moe> | 2024-11-19 21:03:09 +0900 |
|---|---|---|
| committer | Ophestra Umiker <cat@ophivana.moe> | 2024-11-19 21:03:09 +0900 |
| commit | 6bf33ce507bb9d1a01f3712a23464d3a358388b0 (patch) | |
| tree | c1e99c3769dfefc87e1db58730f5ff73ca9ca0f5 | |
| parent | 9faf3b3596c973cb75da7a843e2df1292df0a537 (diff) | |
fortify: use resolved username
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
| -rw-r--r-- | main.go | 48 |
1 files changed, 35 insertions, 13 deletions
@@ -8,6 +8,7 @@ import ( "os/user" "strconv" "strings" + "sync" "text/tabwriter" "git.ophivana.moe/security/fortify/dbus" @@ -188,20 +189,41 @@ func main() { panic("unreachable") } - // resolve home directory from os when flag is unset - if homeDir == "os" { - var us string - if uid, err := os.Uid(aid); err != nil { - fmsg.Fatalf("cannot obtain uid from fsu: %v", err) - } else { - us = strconv.Itoa(uid) - } - if u, err := user.LookupId(us); err != nil { - fmsg.VPrintf("cannot look up uid %s", us) - homeDir = "/var/empty" - } else { - homeDir = u.HomeDir + // resolve home/username from os when flag is unset + var ( + passwd *user.User + passwdOnce sync.Once + passwdFunc = func() { + var us string + if uid, err := os.Uid(aid); err != nil { + fmsg.Fatalf("cannot obtain uid from fsu: %v", err) + } else { + us = strconv.Itoa(uid) + } + + if u, err := user.LookupId(us); err != nil { + fmsg.VPrintf("cannot look up uid %s", us) + passwd = &user.User{ + Uid: us, + Gid: us, + Username: "chronos", + Name: "Fortify", + HomeDir: "/var/empty", + } + } else { + passwd = u + } } + ) + + if homeDir == "os" { + passwdOnce.Do(passwdFunc) + homeDir = passwd.HomeDir + } + + if userName == "chronos" { + passwdOnce.Do(passwdFunc) + userName = passwd.Username } config.Confinement.AppID = aid |
