[CORD-1664] Fix errors when parsing DHCP packets
Change-Id: Ifa9cd3ba04b31f2b7de60fd63dc655978042dbce
diff --git a/utils/misc/src/main/java/org/onlab/packet/dhcp/DhcpOption.java b/utils/misc/src/main/java/org/onlab/packet/dhcp/DhcpOption.java
index e54d6b1..76f768f 100644
--- a/utils/misc/src/main/java/org/onlab/packet/dhcp/DhcpOption.java
+++ b/utils/misc/src/main/java/org/onlab/packet/dhcp/DhcpOption.java
@@ -34,6 +34,7 @@
public class DhcpOption extends BasePacket {
public static final int OPT_CODE_LEN = 1;
public static final int DEFAULT_LEN = 2;
+ protected static final int UNSIGNED_BYTE_MASK = 0xff;
private final Logger log = getLogger(getClass());
protected byte code;
protected byte length;
@@ -76,7 +77,8 @@
dhcpOption.code = byteBuffer.get();
if (byteBuffer.hasRemaining()) {
dhcpOption.length = byteBuffer.get();
- dhcpOption.data = new byte[dhcpOption.length];
+ int optionLen = UNSIGNED_BYTE_MASK & dhcpOption.length;
+ dhcpOption.data = new byte[optionLen];
byteBuffer.get(dhcpOption.data);
} else {
dhcpOption.length = 0;