From: Vinh Nguyen Date: Fri, 18 Nov 2016 23:03:39 +0000 (-0800) Subject: Bug 7209 - Null Pointer Exception in LearnCodecUtil when add learn flow for ipv6 X-Git-Tag: release/boron-sr2~4 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=e9deca32b7e455ba805adc35aa49d635b2a2537e;p=openflowplugin.git Bug 7209 - Null Pointer Exception in LearnCodecUtil when add learn flow for ipv6 The exception caused by using ByteBuf::readShort (valid range: -32,768 32,767) for ipv6 etherType '0x86dd' The fix is to use ByteBuf::readUnsignedShort Change-Id: I238535565a66692b5d4dbe39b8cb7809867f3cde Signed-off-by: Vinh Nguyen --- diff --git a/extension/openflowjava-extension-nicira/src/main/java/org/opendaylight/openflowjava/nx/codec/action/LearnCodecUtil.java b/extension/openflowjava-extension-nicira/src/main/java/org/opendaylight/openflowjava/nx/codec/action/LearnCodecUtil.java index 0a08c8958b..01b3004cf0 100644 --- a/extension/openflowjava-extension-nicira/src/main/java/org/opendaylight/openflowjava/nx/codec/action/LearnCodecUtil.java +++ b/extension/openflowjava-extension-nicira/src/main/java/org/opendaylight/openflowjava/nx/codec/action/LearnCodecUtil.java @@ -261,7 +261,7 @@ public class LearnCodecUtil { private static FlowMods readFlowModAddMatchFromValue(ByteBuf message, short numBits) { FlowModAddMatchFromValueBuilder builder = new FlowModAddMatchFromValueBuilder(); - builder.setValue((int) message.readShort()); + builder.setValue((int) message.readUnsignedShort()); builder.setSrcField((long) message.readInt()); builder.setSrcOfs((int) message.readShort()); builder.setFlowModNumBits((int) numBits); @@ -292,7 +292,7 @@ public class LearnCodecUtil { private static FlowMods readFlowModCopyFromValue(ByteBuf message, short numBits) { FlowModCopyValueIntoFieldBuilder builder = new FlowModCopyValueIntoFieldBuilder(); - builder.setValue((int) message.readShort()); + builder.setValue((int) message.readUnsignedShort()); builder.setDstField((long) message.readInt()); builder.setDstOfs((int) message.readShort()); builder.setFlowModNumBits((int) numBits);