diff options
| author | Ophestra <cat@gensokyo.uk> | 2024-12-26 15:29:26 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2024-12-26 16:08:48 +0900 |
| commit | 614ad86a5bb5d2acbf195d175e1e7c7287c7d467 (patch) | |
| tree | acfa5a8e5e18b092907e8179a193ec277e49d0f7 /dbus | |
| parent | 831dc6a1810df6c42bb0c7127c6c3f586a1cb093 (diff) | |
dbus: fail on LookPath error
An absolute path to xdg-dbus-proxy is required.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'dbus')
| -rw-r--r-- | dbus/dbus_test.go | 12 | ||||
| -rw-r--r-- | dbus/run.go | 6 |
2 files changed, 15 insertions, 3 deletions
diff --git a/dbus/dbus_test.go b/dbus/dbus_test.go index 8e267c79..717ded71 100644 --- a/dbus/dbus_test.go +++ b/dbus/dbus_test.go @@ -124,6 +124,8 @@ func testProxyStartWaitCloseString(t *testing.T, sandbox bool) { t.Run("proxy for "+id, func(t *testing.T) { helper.InternalReplaceExecCommand(t) + overridePath(t) + p := dbus.New(tc[0].bus, tc[1].bus) output := new(strings.Builder) @@ -174,7 +176,7 @@ func testProxyStartWaitCloseString(t *testing.T, sandbox bool) { t.Run("sealed start of "+id, func(t *testing.T) { if err := p.Start(nil, output, sandbox); err != nil { - t.Errorf("Start(nil, nil) error = %v", + t.Fatalf("Start(nil, nil) error = %v", err) } @@ -213,3 +215,11 @@ func testProxyStartWaitCloseString(t *testing.T, sandbox bool) { }) } } + +func overridePath(t *testing.T) { + proxyName := dbus.ProxyName + dbus.ProxyName = "/nonexistent-xdg-dbus-proxy" + t.Cleanup(func() { + dbus.ProxyName = proxyName + }) +} diff --git a/dbus/run.go b/dbus/run.go index bea820eb..f648f008 100644 --- a/dbus/run.go +++ b/dbus/run.go @@ -46,14 +46,16 @@ func (p *Proxy) Start(ready chan error, output io.Writer, sandbox bool) error { // look up absolute path if name is just a file name toolPath := p.name if filepath.Base(p.name) == p.name { - if s, err := exec.LookPath(p.name); err == nil { + if s, err := exec.LookPath(p.name); err != nil { + return err + } else { toolPath = s } } // resolve libraries by parsing ldd output var proxyDeps []*ldd.Entry - if path.IsAbs(toolPath) { + if toolPath != "/nonexistent-xdg-dbus-proxy" { if l, err := ldd.Exec(toolPath); err != nil { return err } else { |
