diff options
| author | Joey Grover <joeygrover@gmail.com> | 2016-10-26 16:45:13 -0400 |
|---|---|---|
| committer | Joey Grover <joeygrover@gmail.com> | 2016-10-26 16:45:13 -0400 |
| commit | 6968008d188aaf483d8d1619aa8fc66f78070cdf (patch) | |
| tree | 3371f79bbb9da9bbb19800529d699dbf481b2d10 | |
| parent | ecacf239f8e2930be9f7a9640929327c8511bbd7 (diff) | |
| download | sdl_android-bugfix/issue_350.tar.gz | |
Fixed #350bugfix/issue_350
Fixed issue where binary frame headers were being added to data for v1 packets and causing an overflow in the data buffer.
| -rw-r--r-- | sdl_android_lib/src/com/smartdevicelink/transport/SdlRouterService.java | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/sdl_android_lib/src/com/smartdevicelink/transport/SdlRouterService.java b/sdl_android_lib/src/com/smartdevicelink/transport/SdlRouterService.java index c17690b12..6652ab217 100644 --- a/sdl_android_lib/src/com/smartdevicelink/transport/SdlRouterService.java +++ b/sdl_android_lib/src/com/smartdevicelink/transport/SdlRouterService.java @@ -1817,16 +1817,15 @@ public class SdlRouterService extends Service{ if (request.getBulkData() != null) pm.setBulkData(request.getBulkData()); byte[] data = null; - if (version > 1) { + if(version > 1) { //If greater than v1 we need to include a binary frame header in the data before all the JSON starts data = new byte[12 + pm.getJsonSize()]; - } else { + BinaryFrameHeader binFrameHeader = new BinaryFrameHeader(); + binFrameHeader = SdlPacketFactory.createBinaryFrameHeader(pm.getRPCType(), pm.getFunctionID(), pm.getCorrID(), pm.getJsonSize()); + System.arraycopy(binFrameHeader.assembleHeaderBytes(), 0, data, 0, 12); + System.arraycopy(pm.getData(), 0, data, 12, pm.getJsonSize()); + }else { data = pm.getData(); } - BinaryFrameHeader binFrameHeader = new BinaryFrameHeader(); - binFrameHeader = SdlPacketFactory.createBinaryFrameHeader(pm.getRPCType(), pm.getFunctionID(), pm.getCorrID(), pm.getJsonSize()); - - System.arraycopy(binFrameHeader.assembleHeaderBytes(), 0, data, 0, 12); - System.arraycopy(pm.getData(), 0, data, 12, pm.getJsonSize()); SdlPacket packet = new SdlPacket(version,false,SdlPacket.FRAME_TYPE_SINGLE,SdlPacket.SERVICE_TYPE_RPC,0,sessionId,data.length,data.length+100,data); return packet.constructPacket(); |
