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

Commit b991befb authored by Hans Boehm's avatar Hans Boehm Committed by Automerger Merge Worker
Browse files

Merge "Don't fork USAPs with open argument buffer" am: 6c61c65f am: 7644e0c5 am: 12a29502

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1651247

Change-Id: I35ddf8d53ab187e6b62633646cef4956266a9695
parents b9bab5bb 12a29502
Loading
Loading
Loading
Loading
+16 −15
Original line number Diff line number Diff line
@@ -149,8 +149,11 @@ class ZygoteConnection {
                    return null;
                }

                if (parsedArgs.mUsapPoolStatusSpecified) {
                    // Handle this once we've released the argBuffer, to avoid opening a second one.
                if (parsedArgs.mUsapPoolStatusSpecified
                        || parsedArgs.mApiDenylistExemptions != null
                        || parsedArgs.mHiddenApiAccessLogSampleRate != -1
                        || parsedArgs.mHiddenApiAccessStatslogSampleRate != -1) {
                    // Handle these once we've released argBuffer, to avoid opening a second one.
                    break;
                }

@@ -183,18 +186,6 @@ class ZygoteConnection {
                    return null;
                }

                if (parsedArgs.mApiDenylistExemptions != null) {
                    return handleApiDenylistExemptions(zygoteServer,
                            parsedArgs.mApiDenylistExemptions);
                }

                if (parsedArgs.mHiddenApiAccessLogSampleRate != -1
                        || parsedArgs.mHiddenApiAccessStatslogSampleRate != -1) {
                    return handleHiddenApiAccessLogSampleRate(zygoteServer,
                            parsedArgs.mHiddenApiAccessLogSampleRate,
                            parsedArgs.mHiddenApiAccessStatslogSampleRate);
                }

                if (parsedArgs.mPermittedCapabilities != 0
                        || parsedArgs.mEffectiveCapabilities != 0) {
                    throw new ZygoteSecurityException("Client may not specify capabilities: "
@@ -311,10 +302,20 @@ class ZygoteConnection {
                }
            }
        }
        // Handle anything that may need a ZygoteCommandBuffer after we've released ours.
        if (parsedArgs.mUsapPoolStatusSpecified) {
            // Now that we've released argBuffer:
            return handleUsapPoolStatusChange(zygoteServer, parsedArgs.mUsapPoolEnabled);
        }
        if (parsedArgs.mApiDenylistExemptions != null) {
            return handleApiDenylistExemptions(zygoteServer,
                    parsedArgs.mApiDenylistExemptions);
        }
        if (parsedArgs.mHiddenApiAccessLogSampleRate != -1
                || parsedArgs.mHiddenApiAccessStatslogSampleRate != -1) {
            return handleHiddenApiAccessLogSampleRate(zygoteServer,
                    parsedArgs.mHiddenApiAccessLogSampleRate,
                    parsedArgs.mHiddenApiAccessStatslogSampleRate);
        }
        throw new AssertionError("Shouldn't get here");
    }