internal/app/spcontainer: resolve path through dispatcher

This prevents state from os tainting the test data.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2025-10-11 20:15:53 +09:00
parent 037144b06e
commit 36f312b3ba
2 changed files with 8 additions and 1 deletions

View File

@@ -581,6 +581,8 @@ func (k *stubNixOS) lookupEnv(key string) (string, bool) {
return "/run/user/1971", true return "/run/user/1971", true
case "XDG_CONFIG_HOME": case "XDG_CONFIG_HOME":
return "/home/ophestra/xdg/config", true return "/home/ophestra/xdg/config", true
case "DBUS_SYSTEM_BUS_ADDRESS":
return "", false
default: default:
panic(fmt.Sprintf("attempted to access unexpected environment variable %q", key)) panic(fmt.Sprintf("attempted to access unexpected environment variable %q", key))
} }

View File

@@ -139,7 +139,12 @@ func (s *spFilesystemOp) toSystem(state *outcomeStateSys) error {
varRunNscd, varRunNscd,
} }
_, systemBusAddr := dbus.Address() // dbus.Address does not go through syscallDispatcher
systemBusAddr := dbus.FallbackSystemBusAddress
if addr, ok := state.k.lookupEnv(dbus.SystemBusAddress); ok {
systemBusAddr = addr
}
if entries, err := dbus.Parse([]byte(systemBusAddr)); err != nil { if entries, err := dbus.Parse([]byte(systemBusAddr)); err != nil {
return &hst.AppError{Step: "parse dbus address", Err: err} return &hst.AppError{Step: "parse dbus address", Err: err}
} else { } else {