diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2020-05-08 04:36:33 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-05-08 04:36:33 +0000 |
commit | ee30356ce20c3c0bb9cfb68ca7c43e57cf81b8a8 (patch) | |
tree | 7a54094917c920b8f4d31ad75496f79206b74adf | |
parent | 3006c1c09e13e59aecd9dbcefea0acafacd5223e (diff) | |
parent | f8de4fdcc3bd91b5b56f58eb2e3b420c09e14ca6 (diff) |
Merge "Set clientId when parsing an explicit DHCP_CLIENT_IDENTIFIER option." into rvc-dev am: f8de4fdcc3
Change-Id: Icee24bcf4587fc538a78416e49338bdbf173b083
-rw-r--r-- | src/android/net/dhcp/DhcpPacket.java | 4 | ||||
-rw-r--r-- | tests/unit/src/android/net/dhcp/DhcpPacketTest.java | 35 |
2 files changed, 37 insertions, 2 deletions
diff --git a/src/android/net/dhcp/DhcpPacket.java b/src/android/net/dhcp/DhcpPacket.java index 852719e..a4dbda1 100644 --- a/src/android/net/dhcp/DhcpPacket.java +++ b/src/android/net/dhcp/DhcpPacket.java @@ -1182,8 +1182,8 @@ public abstract class DhcpPacket { vendorId = readAsciiString(packet, optionLen, true); break; case DHCP_CLIENT_IDENTIFIER: { // Client identifier - byte[] id = new byte[optionLen]; - packet.get(id); + clientId = new byte[optionLen]; + packet.get(clientId); expectedLen = optionLen; } break; case DHCP_VENDOR_INFO: diff --git a/tests/unit/src/android/net/dhcp/DhcpPacketTest.java b/tests/unit/src/android/net/dhcp/DhcpPacketTest.java index 6ce1fdf..c565238 100644 --- a/tests/unit/src/android/net/dhcp/DhcpPacketTest.java +++ b/tests/unit/src/android/net/dhcp/DhcpPacketTest.java @@ -728,6 +728,41 @@ public class DhcpPacketTest { } @Test + public void testExplicitClientId() throws Exception { + final byte[] clientId = new byte[] { + 0x01 /* CLIENT_ID_ETH */, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 }; + + // CHECKSTYLE:OFF Generated code + final byte[] packet = HexDump.hexStringToByteArray( + // IP header. + "450001518d0600004011144dc0a82b01c0a82bf7" + + // UDP header + "00430044013d9ac7" + + // BOOTP header + "02010600dfc23d1f0002000000000000c0a82bf7c0a82b0100000000" + + // MAC address. + "30766ff2a90c00000000000000000000" + + // Server name ("dhcp.android.com" plus invalid "AAAA" after null terminator). + "646863702e616e64726f69642e636f6d00000000000000000000000000000000" + + "0000000000004141414100000000000000000000000000000000000000000000" + + // File. + "0000000000000000000000000000000000000000000000000000000000000000" + + "0000000000000000000000000000000000000000000000000000000000000000" + + "0000000000000000000000000000000000000000000000000000000000000000" + + "0000000000000000000000000000000000000000000000000000000000000000" + + // Options + "638253633501013d0701010203040506390205dc3c0e616e64726f69642d6468" + + "63702d52370a0103060f1a1c333a3b2bff00"); + // CHECKSTYLE:ON Generated code + + final DhcpPacket discoverPacket = DhcpPacket.decodeFullPacket(packet, + packet.length, ENCAP_L3); + assertTrue(discoverPacket instanceof DhcpDiscoverPacket); + assertTrue(discoverPacket.hasExplicitClientId()); + assertTrue(Arrays.equals(discoverPacket.mClientId, clientId)); + } + + @Test public void testBadHwaddrLength() throws Exception { // CHECKSTYLE:OFF Generated code final ByteBuffer packet = ByteBuffer.wrap(HexDump.hexStringToByteArray( |