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

Commit b7f0e103 authored by Jack Yu's avatar Jack Yu
Browse files

Fixed dump not gated by permission

Fix: 278217014
Test: atest android.security.cts.ServicePermissionsTest#testDumpProtected
Change-Id: I2a63d653fb539e5fbe8c5a0cf74bb5e4225d5593
parent 8d28545a
Loading
Loading
Loading
Loading
+82 −74
Original line number Diff line number Diff line
@@ -4001,6 +4001,10 @@ public class SubscriptionManagerService extends ISub.Stub {
     */
    public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter printWriter,
            @NonNull String[] args) {
        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP,
                "Requires android.Manifest.permission.DUMP");
        final long token = Binder.clearCallingIdentity();
        try {
            IndentingPrintWriter pw = new IndentingPrintWriter(printWriter, "  ");
            pw.println(SubscriptionManagerService.class.getSimpleName() + ":");
            pw.println("Active modem count=" + mTelephonyManager.getActiveModemCount());
@@ -4024,7 +4028,8 @@ public class SubscriptionManagerService extends ISub.Stub {
            pw.println("areAllSubscriptionsLoaded=" + areAllSubscriptionsLoaded());
            pw.println();
            for (int i = 0; i < mSimState.length; i++) {
            pw.println("mSimState[" + i + "]=" + TelephonyManager.simStateToString(mSimState[i]));
                pw.println("mSimState[" + i + "]="
                        + TelephonyManager.simStateToString(mSimState[i]));
            }

            pw.println();
@@ -4075,5 +4080,8 @@ public class SubscriptionManagerService extends ISub.Stub {
            pw.decreaseIndent();
            pw.println();
            mSubscriptionDatabaseManager.dump(fd, pw, args);
        } finally {
            Binder.restoreCallingIdentity(token);
        }
    }
}
+6 −1
Original line number Diff line number Diff line
@@ -2028,8 +2028,13 @@ public class SubscriptionManagerServiceTest extends TelephonyTest {
        insertSubscription(FAKE_SUBSCRIPTION_INFO1);
        insertSubscription(FAKE_SUBSCRIPTION_INFO2);

        mContextFixture.addCallingOrSelfPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE);
        final StringWriter stringWriter = new StringWriter();
        assertThrows(SecurityException.class, ()
                -> mSubscriptionManagerServiceUT.dump(new FileDescriptor(),
                new PrintWriter(stringWriter), null));

        mContextFixture.addCallingOrSelfPermission(Manifest.permission.DUMP);
        mContextFixture.addCallingOrSelfPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE);
        mSubscriptionManagerServiceUT.dump(new FileDescriptor(), new PrintWriter(stringWriter),
                null);
        assertThat(stringWriter.toString().length()).isGreaterThan(0);