[CORD-2064] When parsing InterfaceID buffer size is insufficient

Change-Id: I92966a6e59e4ba0319eef025f87193651f5918b1
diff --git a/utils/misc/src/main/java/org/onlab/packet/dhcp/Dhcp6InterfaceIdOption.java b/utils/misc/src/main/java/org/onlab/packet/dhcp/Dhcp6InterfaceIdOption.java
index 0270032..2bd47e1 100644
--- a/utils/misc/src/main/java/org/onlab/packet/dhcp/Dhcp6InterfaceIdOption.java
+++ b/utils/misc/src/main/java/org/onlab/packet/dhcp/Dhcp6InterfaceIdOption.java
@@ -31,6 +31,8 @@
  * Based on RFC-3315.
  */
 public final class Dhcp6InterfaceIdOption extends Dhcp6Option {
+    private static final short VLAN_LEN = 2;
+    private static final short SEPARATOR_LEN = 1;
     private MacAddress peerMacAddr;
     private byte[] inPort;
     private short vlanId;
@@ -138,7 +140,8 @@
                 ByteBuffer bb = ByteBuffer.wrap(optionData);
 
                 byte[] macAddr = new byte[MacAddress.MAC_ADDRESS_LENGTH];
-                byte[] port = new byte[21];
+                byte[] port = new byte[optionData.length - MacAddress.MAC_ADDRESS_LENGTH -
+                                                        VLAN_LEN - SEPARATOR_LEN * 2];
                 short vlan;
                 bb.get(macAddr);
                 bb.get();  // separator "-"