-
-
Notifications
You must be signed in to change notification settings - Fork 76
Open
Description
DirectConnection.listen() crashes with NPE in SASL.doResponse when peer is sd-bus
Summary
dbus-java server-side direct bus listener crashes with:
java.lang.NullPointerException
at java.text.RuleBasedCollator.compare
at org.freedesktop.dbus.connections.SASL.doResponse(SASL.java:369)
when the connecting peer is native sd-bus (C/libsystemd).
This looks like a null-handling bug in SASL response processing for AUTH EXTERNAL.
Environment
- dbus-java-core:
5.1.1 - dbus-java-transport-junixsocket:
5.1.1 - Java:
21.0.10 - OS: Linux x86_64 (
6.18.7-arch1-1) - Native peer:
libsystemd259
Minimal Reproducer
I created a standalone repro with:
- Java server:
DirectConnectionBuilder.forAddress("unix:path=...,listen=true").build(); connection.listen(); - C client using
sd-bus:sd_bus_newsd_bus_set_address("unix:path=...")sd_bus_start
Run:
./repro/dbus-java-sasl-npe/run-repro.shRepro files:
repro/dbus-java-sasl-npe/server/src/main/java/repro/DbusJavaServer.javarepro/dbus-java-sasl-npe/client/sd_bus_client.crepro/dbus-java-sasl-npe/run-repro.sh
Actual Result
Server exits with:
Exception in thread "main" java.lang.NullPointerException
at java.base/java.text.RuleBasedCollator.compare(RuleBasedCollator.java:359)
at org.freedesktop.dbus.connections.SASL.doResponse(SASL.java:369)
at org.freedesktop.dbus.connections.SASL.auth(SASL.java:625)
at org.freedesktop.dbus.connections.transports.AbstractTransport.authenticate(AbstractTransport.java:254)
at org.freedesktop.dbus.connections.transports.AbstractTransport.internalConnect(AbstractTransport.java:230)
at org.freedesktop.dbus.connections.transports.AbstractTransport.listen(AbstractTransport.java:215)
at org.freedesktop.dbus.connections.impl.DirectConnection.listen(DirectConnection.java:66)
at repro.DbusJavaServer.main(DbusJavaServer.java:47)
Expected Result
DirectConnection.listen() should not crash; it should either authenticate successfully or reject auth without throwing NPE.
Notes
In the D-Bus auth protocol, AUTH initial response is optional. A missing initial payload should be handled safely:
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels