Use read 4 bytes in TE Metric case 09/90809/3
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 29 Jun 2020 14:25:11 +0000 (16:25 +0200)
committerRobert Varga <nite@hq.sk>
Fri, 17 Jul 2020 10:02:28 +0000 (10:02 +0000)
https://tools.ietf.org/html/rfc7752#section-3.3.2.3 requires the
field to have 4 bytes. Do not allow smaller values by using exacting
ByteBufUtils.readUint32().

Change-Id: I2e3604d4717b77a66b037ed35369c1d195ad2c94
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/attribute/LinkAttributesParser.java

index 1516b73c3995a66d29e429b582c8bef06527525d..9cc4de990f0325d649c596ed18e98dbd56b40fe5 100644 (file)
@@ -161,7 +161,7 @@ public final class LinkAttributesParser {
                     parseUnreservedBandwidth(value, builder);
                     break;
                 case TE_METRIC:
-                    builder.setTeMetric(new TeMetric(ByteArray.bytesToLong(ByteArray.readAllBytes(value))));
+                    builder.setTeMetric(new TeMetric(ByteBufUtils.readUint32(value)));
                     LOG.debug("Parsed Metric {}", builder.getTeMetric());
                     break;
                 case LINK_PROTECTION_TYPE: