It appears that when the data is parsed in OpenLCB, it assumes that the data is a long. It seems that because there is not enough data to parse, the fact that it is assuming a 6-byte protocol support causes the resulting output to be incorrect.
The parsing happens at can.MessageBuilder#265. One way to fix this would be to add and use a paddedDataAsLong method in CanFrame that handles the necessary padding.
When sending a ProtocolSupportReply message over the LCC bus, if the payload is not 8 bytes long it is not parsed correctly(more information).
In JMRI, the following is displayed in the traffic monitor when only one byte of data is sent back:
It appears that when the data is parsed in OpenLCB, it assumes that the data is a long. It seems that because there is not enough data to parse, the fact that it is assuming a 6-byte protocol support causes the resulting output to be incorrect.