OMS: do not hide reason for failing transactions (on non-user builds)

To improve security, the reason why an overlay transaction failed is
hidden from the caller unless OverlayManagerService.DEBUG is set to
true.

Tweak the logic to not hide the reason on userdebug and eng builds: this
will make it easier to debug tests that fail in CI while keeping the
code secure on user builds.

Test: manual: make executeAllRequests throw, test via `adb shell cmd overlay enable`, check error message
Change-Id: I1c35b9b24a01ea30a50398df9f250ad4e43c0686
This commit is contained in:
Mårten Kongstad
2022-11-02 15:11:59 +01:00
parent bcc31bca47
commit 58d66bcf7f

View File

@@ -60,6 +60,7 @@ import android.content.pm.overlay.OverlayPaths;
import android.content.res.ApkAssets;
import android.net.Uri;
import android.os.Binder;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.FabricatedOverlayInternal;
@@ -881,7 +882,7 @@ public final class OverlayManagerService extends SystemService {
}
Slog.d(TAG, "commit failed: " + e.getMessage(), e);
throw new SecurityException("commit failed"
+ (DEBUG ? ": " + e.getMessage() : ""));
+ (DEBUG || Build.IS_DEBUGGABLE ? ": " + e.getMessage() : ""));
}
} finally {
traceEnd(TRACE_TAG_RRO);