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