diff options
author | Xiao Ma <xiaom@google.com> | 2020-06-17 08:23:37 +0000 |
---|---|---|
committer | Xiao Ma <xiaom@google.com> | 2020-06-17 10:15:48 +0000 |
commit | 65435e2810188ae23eeea04ff28d46b852d6320b (patch) | |
tree | 6a286f1e83c2072d2c5edea88e26b3192a9fe34e /common/networkstackclient | |
parent | b9364f50bc10ffb539cc773fa5d78d49e205033d (diff) |
Fix the potential NPE when calling IPMS API and ExecutionException is thrown.
Listener callback argument is marked as @Nullable in some APIs, means
client isn't interested in learning about return value, in these cases
should check if it's null or not before using this callback.
Bug: 147922038
Test: atest NetworkStackTests FrameworksNetTests
Merged-In: Ib46624c76c2c1e50c73ccfbb295a0e90e6fa1c88
Change-Id: Ib46624c76c2c1e50c73ccfbb295a0e90e6fa1c88
Diffstat (limited to 'common/networkstackclient')
-rw-r--r-- | common/networkstackclient/src/android/net/IpMemoryStoreClient.java | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/common/networkstackclient/src/android/net/IpMemoryStoreClient.java b/common/networkstackclient/src/android/net/IpMemoryStoreClient.java index f269f9c..a1c5694 100644 --- a/common/networkstackclient/src/android/net/IpMemoryStoreClient.java +++ b/common/networkstackclient/src/android/net/IpMemoryStoreClient.java @@ -92,6 +92,7 @@ public abstract class IpMemoryStoreClient { () -> service.storeNetworkAttributes(l2Key, attributes.toParcelable(), OnStatusListener.toAIDL(listener)))); } catch (ExecutionException m) { + if (null == listener) return; ignoringRemoteException("Error storing network attributes", () -> listener.onComplete(new Status(Status.ERROR_UNKNOWN))); } @@ -116,6 +117,7 @@ public abstract class IpMemoryStoreClient { () -> service.storeBlob(l2Key, clientId, name, data, OnStatusListener.toAIDL(listener)))); } catch (ExecutionException m) { + if (null == listener) return; ignoringRemoteException("Error storing blob", () -> listener.onComplete(new Status(Status.ERROR_UNKNOWN))); } @@ -143,7 +145,8 @@ public abstract class IpMemoryStoreClient { OnL2KeyResponseListener.toAIDL(listener)))); } catch (ExecutionException m) { ignoringRemoteException("Error finding L2 Key", - () -> listener.onL2KeyResponse(new Status(Status.ERROR_UNKNOWN), null)); + () -> listener.onL2KeyResponse(new Status(Status.ERROR_UNKNOWN), + null /* l2Key */)); } } @@ -164,7 +167,8 @@ public abstract class IpMemoryStoreClient { OnSameL3NetworkResponseListener.toAIDL(listener)))); } catch (ExecutionException m) { ignoringRemoteException("Error checking for network sameness", - () -> listener.onSameL3NetworkResponse(new Status(Status.ERROR_UNKNOWN), null)); + () -> listener.onSameL3NetworkResponse(new Status(Status.ERROR_UNKNOWN), + null /* response */)); } } @@ -186,7 +190,7 @@ public abstract class IpMemoryStoreClient { } catch (ExecutionException m) { ignoringRemoteException("Error retrieving network attributes", () -> listener.onNetworkAttributesRetrieved(new Status(Status.ERROR_UNKNOWN), - null, null)); + null /* l2Key */, null /* attributes */)); } } @@ -210,7 +214,7 @@ public abstract class IpMemoryStoreClient { } catch (ExecutionException m) { ignoringRemoteException("Error retrieving blob", () -> listener.onBlobRetrieved(new Status(Status.ERROR_UNKNOWN), - null, null, null)); + null /* l2Key */, null /* name */, null /* blob */)); } } @@ -235,6 +239,7 @@ public abstract class IpMemoryStoreClient { runWhenServiceReady(service -> ignoringRemoteException(() -> service.delete(l2Key, needWipe, OnDeleteStatusListener.toAIDL(listener)))); } catch (ExecutionException m) { + if (null == listener) return; ignoringRemoteException("Error deleting from the memory store", () -> listener.onComplete(new Status(Status.ERROR_UNKNOWN), 0 /* deletedRecords */)); @@ -266,6 +271,7 @@ public abstract class IpMemoryStoreClient { () -> service.deleteCluster(cluster, needWipe, OnDeleteStatusListener.toAIDL(listener)))); } catch (ExecutionException m) { + if (null == listener) return; ignoringRemoteException("Error deleting from the memory store", () -> listener.onComplete(new Status(Status.ERROR_UNKNOWN), 0 /* deletedRecords */)); |