Open
Description
Hi, using dbus-java 3.2.0 I got an exception:
java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 10
at org.freedesktop.dbus.Marshalling.recursiveGetDBusType(Marshalling.java:157)
at org.freedesktop.dbus.Marshalling.recursiveGetDBusType(Marshalling.java:288)
at org.freedesktop.dbus.Marshalling.recursiveGetDBusType(Marshalling.java:264)
at org.freedesktop.dbus.Marshalling.recursiveGetDBusType(Marshalling.java:288)
at org.freedesktop.dbus.Marshalling.recursiveGetDBusType(Marshalling.java:264)
at org.freedesktop.dbus.Marshalling.recursiveGetDBusType(Marshalling.java:288)
at org.freedesktop.dbus.Marshalling.recursiveGetDBusType(Marshalling.java:264)
at org.freedesktop.dbus.Marshalling.recursiveGetDBusType(Marshalling.java:288)
at org.freedesktop.dbus.Marshalling.recursiveGetDBusType(Marshalling.java:264)
at org.freedesktop.dbus.Marshalling.recursiveGetDBusType(Marshalling.java:288)
at org.freedesktop.dbus.Marshalling.recursiveGetDBusType(Marshalling.java:288)
at org.freedesktop.dbus.Marshalling.getDBusType(Marshalling.java:148)
at org.freedesktop.dbus.Marshalling.getDBusType(Marshalling.java:133)
at org.freedesktop.dbus.messages.ExportedObject.getExportedMethods(ExportedObject.java:186)
at org.freedesktop.dbus.messages.ExportedObject.getExportedMethods(ExportedObject.java:198)
at org.freedesktop.dbus.messages.ExportedObject.<init>(ExportedObject.java:51)
at org.freedesktop.dbus.connections.AbstractConnection.exportObject(AbstractConnection.java:269)
It's because of the problem in org.freedesktop.dbus.Marshalling class (the same code up to the latest version of dbus-java):
...
private static String[] recursiveGetDBusType(StringBuffer[] _out, Type _dataType, boolean _basic, int _level) throws DBusException {
if (_out.length <= _level) {
StringBuffer[] newout = new StringBuffer[_out.length];
System.arraycopy(_out, 0, newout, 0, _out.length);
_out = newout;
}
...
My solution is something like this:
- StringBuffer[] newout = new StringBuffer[_out.length];
+ StringBuffer[] newout = new StringBuffer[_level + 10];
Metadata
Metadata
Assignees
Labels
No labels