diff --git a/service/src/com/android/server/ConnectivityService.java b/service/src/com/android/server/ConnectivityService.java
index bca3082..5602f26 100644
--- a/service/src/com/android/server/ConnectivityService.java
+++ b/service/src/com/android/server/ConnectivityService.java
@@ -3607,7 +3607,7 @@
                     nai.declaredCapabilitiesUnsanitized =
                             new NetworkCapabilities((NetworkCapabilities) arg.second);
                     final NetworkCapabilities sanitized = sanitizedCapabilitiesFromAgent(
-                            nai, nai.declaredCapabilitiesUnsanitized);
+                            mCarrierPrivilegeAuthenticator, nai);
                     maybeUpdateWifiRoamTimestamp(nai, sanitized);
                     updateCapabilities(nai.getCurrentScore(), nai, sanitized);
                     break;
@@ -7331,7 +7331,7 @@
         nai.declaredCapabilitiesUnsanitized = new NetworkCapabilities(nai.networkCapabilities);
         // Make sure the LinkProperties and NetworkCapabilities reflect what the agent info said.
         final NetworkCapabilities nc =
-                sanitizedCapabilitiesFromAgent(nai, nai.declaredCapabilitiesUnsanitized);
+                sanitizedCapabilitiesFromAgent(mCarrierPrivilegeAuthenticator, nai);
         nai.getAndSetNetworkCapabilities(mixInCapabilities(nai, nc));
         processLinkPropertiesFromAgent(nai, lp);
         nai.linkProperties = lp;
@@ -7809,9 +7809,10 @@
      * {@link NetworkAgentInfo#declaredCapabilitiesUnsanitized}.
      */
     // TODO : move this to NetworkAgentInfo
-    private NetworkCapabilities sanitizedCapabilitiesFromAgent(@NonNull final NetworkAgentInfo nai,
-            @NonNull final NetworkCapabilities unsanitized) {
-        final NetworkCapabilities nc = new NetworkCapabilities(unsanitized);
+    private NetworkCapabilities sanitizedCapabilitiesFromAgent(
+            final CarrierPrivilegeAuthenticator carrierPrivilegeAuthenticator,
+            @NonNull final NetworkAgentInfo nai) {
+        final NetworkCapabilities nc = new NetworkCapabilities(nai.declaredCapabilitiesUnsanitized);
         if (nc.hasConnectivityManagedCapability()) {
             Log.wtf(TAG, "BUG: " + nai + " has CS-managed capability.");
         }
@@ -7822,7 +7823,7 @@
         }
         NetworkAgentInfo.restrictCapabilitiesFromNetworkAgent(nc, nai.creatorUid,
                 mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE),
-                mCarrierPrivilegeAuthenticator);
+                carrierPrivilegeAuthenticator);
         return nc;
     }
 
@@ -7951,7 +7952,7 @@
 
         if (nai.propagateUnderlyingCapabilities()) {
             applyUnderlyingCapabilities(nai.declaredUnderlyingNetworks,
-                    sanitizedCapabilitiesFromAgent(nai, nai.declaredCapabilitiesUnsanitized),
+                    sanitizedCapabilitiesFromAgent(mCarrierPrivilegeAuthenticator, nai),
                     newNc);
         }
 
