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

Commit 6c1f6fd7 authored by Rubin Xu's avatar Rubin Xu
Browse files

Patch incoming LinkProperties before it's visible to the outside

Otherwise we risk a race condition when we are fixing the LinkProperties
routes, other parts of ConnectivityService is reading the field at the
same time.

Test: runtest frameworks-net -c com.android.server.ConnectivityServiceTest
Test: runtest frameworks-core -c android.net.LinkPropertiesTest
Bug: 65529483
Bug: 35995111
Change-Id: I539578703570a901e0a5dff0155422ca78c52401
parent a9020549
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -4641,7 +4641,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
            // Ignore updates for disconnected networks
            return;
        }

        // newLp is already a defensive copy.
        newLp.ensureDirectlyConnectedRoutes();
        if (VDBG) {
            log("Update of LinkProperties for " + nai.name() +
                    "; created=" + nai.created +
@@ -4651,8 +4652,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
        synchronized (nai) {
            nai.linkProperties = newLp;
        }
        // msg.obj is already a defensive copy.
        nai.linkProperties.ensureDirectlyConnectedRoutes();
        if (nai.everConnected) {
            updateLinkProperties(nai, oldLp);
        }