aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2024-12-26 15:29:26 +0900
committerOphestra <cat@gensokyo.uk>2024-12-26 16:08:48 +0900
commit614ad86a5bb5d2acbf195d175e1e7c7287c7d467 (patch)
treeacfa5a8e5e18b092907e8179a193ec277e49d0f7
parent831dc6a1810df6c42bb0c7127c6c3f586a1cb093 (diff)
dbus: fail on LookPath error
An absolute path to xdg-dbus-proxy is required. Signed-off-by: Ophestra <cat@gensokyo.uk>
-rw-r--r--dbus/dbus_test.go12
-rw-r--r--dbus/run.go6
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 {