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

Change-Id: I92966a6e59e4ba0319eef025f87193651f5918b1
diff --git a/apps/dhcprelay/src/test/java/org/onosproject/dhcprelay/DhcpRelayManagerTest.java b/apps/dhcprelay/src/test/java/org/onosproject/dhcprelay/DhcpRelayManagerTest.java
index 883bf2f..0de95f0 100644
--- a/apps/dhcprelay/src/test/java/org/onosproject/dhcprelay/DhcpRelayManagerTest.java
+++ b/apps/dhcprelay/src/test/java/org/onosproject/dhcprelay/DhcpRelayManagerTest.java
@@ -119,6 +119,8 @@
 import static org.onosproject.dhcprelay.DhcpRelayManager.DHCP_SELECTORS;
 
 public class DhcpRelayManagerTest {
+    private static final short VLAN_LEN = 2;
+    private static final short SEPARATOR_LEN = 1;
     private static final String CONFIG_FILE_PATH = "dhcp-relay.json";
     private static final DeviceId DEV_1_ID = DeviceId.deviceId("of:0000000000000001");
     private static final DeviceId DEV_2_ID = DeviceId.deviceId("of:0000000000000002");
@@ -1247,10 +1249,12 @@
         interfaceId.setData(interfaceIdBytes);
         interfaceId.setLength((short) interfaceIdBytes.length);
         Dhcp6InterfaceIdOption interfaceIdOption = new Dhcp6InterfaceIdOption(interfaceId);
+        byte[] optionData = interfaceIdOption.getData();
         ByteBuffer bb = ByteBuffer.wrap(interfaceIdBytes);
 
         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
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 "-"