diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2020-05-08 05:03:21 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-05-08 05:03:21 +0000 |
commit | e5a887e736b3780a3243ee90f16c0495a7e23461 (patch) | |
tree | 168a8ab931a1777f6d97e69621140da368f653ad | |
parent | 8b5a088458e2e6fe88430368977a44de6adea216 (diff) | |
parent | ee30356ce20c3c0bb9cfb68ca7c43e57cf81b8a8 (diff) |
Merge "Set clientId when parsing an explicit DHCP_CLIENT_IDENTIFIER option." into rvc-dev am: f8de4fdcc3 am: ee30356ce2
Change-Id: I70c02e488d88d9d73c4744dcc2a3ea3423a4a9b3
-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( |