This is an automated email from the ASF dual-hosted git repository. cdutz pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git
The following commit(s) were added to refs/heads/develop by this push: new 78f84b4 PLC4X-84 - NPE when reading Marker 78f84b4 is described below commit 78f84b413db76959e4732d2eedb431389ce55bc5 Author: Christofer Dutz <christofer.d...@c-ware.de> AuthorDate: Thu Feb 21 14:21:40 2019 +0100 PLC4X-84 - NPE when reading Marker - Made the protocol throw an exception if an unknown memory area is referenced. --- .../src/main/java/org/apache/plc4x/java/s7/netty/S7Protocol.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/S7Protocol.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/S7Protocol.java index b3b5a87..17214ca 100644 --- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/S7Protocol.java +++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/S7Protocol.java @@ -28,6 +28,7 @@ import io.netty.util.concurrent.PromiseCombiner; import org.apache.commons.lang3.reflect.FieldUtils; import org.apache.plc4x.java.api.exceptions.PlcProtocolException; import org.apache.plc4x.java.api.exceptions.PlcProtocolPayloadTooBigException; +import org.apache.plc4x.java.api.exceptions.PlcRuntimeException; import org.apache.plc4x.java.isotp.protocol.IsoTPProtocol; import org.apache.plc4x.java.isotp.protocol.events.IsoTPConnectedEvent; import org.apache.plc4x.java.isotp.protocol.model.IsoTPMessage; @@ -757,7 +758,11 @@ public class S7Protocol extends ChannelDuplexHandler { TransportSize dataType = TransportSize.valueOf(in.readByte()); short length = in.readShort(); short dbNumber = in.readShort(); - MemoryArea memoryArea = MemoryArea.valueOf(in.readByte()); + byte memoryAreaCode = in.readByte(); + MemoryArea memoryArea = MemoryArea.valueOf(memoryAreaCode); + if(memoryArea == null) { + throw new PlcRuntimeException("Unknown memory area '" + memoryAreaCode + "'"); + } short byteAddress = (short) (in.readShort() << 5); byte tmp = in.readByte(); // Only the least 3 bits are the bit address, the