[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;