From a66de9c21eac7e57bcf2adb667c2ef679870d48c Mon Sep 17 00:00:00 2001 From: Xiao Ma Date: Thu, 14 Mar 2019 18:14:36 +0900 Subject: Fix the potential NullPointerException. The networkAttributesParcelable retrieved from IpMemoryStore might be null, it might cause crash with NullPointerException when attepmting to read from the field on a null object reference. Bug: 122710829 Test: atest FrameworksNetTests NetworkStackTests Change-Id: Id7527199424e55f1e14836e81a5d1965d13013a2 --- services/net/java/android/net/ipmemorystore/NetworkAttributes.java | 5 ++++- .../net/ipmemorystore/OnNetworkAttributesRetrievedListener.java | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/services/net/java/android/net/ipmemorystore/NetworkAttributes.java b/services/net/java/android/net/ipmemorystore/NetworkAttributes.java index e76976991797..818515ac9af1 100644 --- a/services/net/java/android/net/ipmemorystore/NetworkAttributes.java +++ b/services/net/java/android/net/ipmemorystore/NetworkAttributes.java @@ -127,6 +127,7 @@ public class NetworkAttributes { @Nullable private static InetAddress getByAddressOrNull(@Nullable final byte[] address) { + if (null == address) return null; try { return InetAddress.getByAddress(address); } catch (UnknownHostException e) { @@ -227,7 +228,9 @@ public class NetworkAttributes { } /** - * Set the lease expiry timestamp of assigned v4 address. + * Set the lease expiry timestamp of assigned v4 address. Long.MAX_VALUE is used + * to represent "infinite lease". + * * @param assignedV4AddressExpiry The lease expiry timestamp of assigned v4 address. * @return This builder. */ diff --git a/services/net/java/android/net/ipmemorystore/OnNetworkAttributesRetrievedListener.java b/services/net/java/android/net/ipmemorystore/OnNetworkAttributesRetrievedListener.java index ca6f3029d496..395ad98f38e0 100644 --- a/services/net/java/android/net/ipmemorystore/OnNetworkAttributesRetrievedListener.java +++ b/services/net/java/android/net/ipmemorystore/OnNetworkAttributesRetrievedListener.java @@ -40,8 +40,8 @@ public interface OnNetworkAttributesRetrievedListener { // NonNull, but still don't crash the system server if null if (null != listener) { listener.onNetworkAttributesRetrieved( - new Status(statusParcelable), l2Key, - new NetworkAttributes(networkAttributesParcelable)); + new Status(statusParcelable), l2Key, null == networkAttributesParcelable + ? null : new NetworkAttributes(networkAttributesParcelable)); } } -- cgit v1.2.3-59-g8ed1b