Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7f70306b authored by Xiao Ma's avatar Xiao Ma
Browse files

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
Change-Id: Ib46624c76c2c1e50c73ccfbb295a0e90e6fa1c88
parent f1a5da71
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -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 */));