From a29857549c471424dd0713b92ab51701c577d357 Mon Sep 17 00:00:00 2001 From: Florian Fittkau <ffi@informatik.uni-kiel.de> Date: Wed, 26 Feb 2014 22:20:05 +0100 Subject: [PATCH] hopefully fixed worker issue #1 buffer underflow --- .../reader/TCPReaderOneClient.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java b/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java index 6b45af9..8387ced 100644 --- a/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java +++ b/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java @@ -163,7 +163,7 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec return; } case Trace.CLAZZ_ID: { - if (buffer.remaining() >= 9) { + if (buffer.remaining() >= Trace.BYTE_LENGTH) { final byte validByte = buffer.get(); boolean valid = true; if (validByte == (byte) 0) { @@ -171,15 +171,13 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec } final int eventsLength = buffer.getInt(); final int byteLength = buffer.getInt(); - if (buffer.remaining() >= byteLength) { + if ((buffer.remaining() >= byteLength) && (eventsLength > 0)) { final List<AbstractEventRecord> events = new ArrayList<AbstractEventRecord>( eventsLength); for (int i = 0; i < eventsLength; i++) { - AbstractEventRecord eventRecord; try { - eventRecord = AbstractEventRecord.createFromByteBuffer(buffer, - stringRegistry); - events.add(eventRecord); + events.add(AbstractEventRecord.createFromByteBuffer(buffer, + stringRegistry)); } catch (final IdNotAvailableException e) { // should not happen e.printStackTrace(); -- GitLab