Remove TREBLE_TESTING_OVERRIDE.
We can't safely read this environmental variable with getenv because
some clients may use getService in a multi-threaded environment in
conjunction with other calls to setenv/etc.. which cause UB/crashes.
android::hardware::details::setTrebleTestingOverride should be used
instead.
Fixes: 156668058
Test: HIDL's ./test/run_all_device_tests.sh and others where
TREBLE_TESTING_OVERRIDE has been switched to setTrebleTestingOverride
Change-Id: I51130f6441b0fbd495fbefd12b3e2d37ff514238
diff --git a/transport/ServiceManagement.cpp b/transport/ServiceManagement.cpp
index 014958b..1c30909 100644
--- a/transport/ServiceManagement.cpp
+++ b/transport/ServiceManagement.cpp
@@ -165,10 +165,13 @@
static constexpr bool kDebuggable = false;
#endif
-static bool gTrebleTestingOverride = false;
+static bool* getTrebleTestingOverridePtr() {
+ static bool gTrebleTestingOverride = false;
+ return &gTrebleTestingOverride;
+}
void setTrebleTestingOverride(bool testingOverride) {
- gTrebleTestingOverride = testingOverride;
+ *getTrebleTestingOverridePtr() = testingOverride;
}
static inline bool isTrebleTestingOverride() {
@@ -177,10 +180,7 @@
return false;
}
- if (gTrebleTestingOverride) return gTrebleTestingOverride;
-
- const char* env = std::getenv("TREBLE_TESTING_OVERRIDE");
- return env && !strcmp(env, "true");
+ return *getTrebleTestingOverridePtr();
}
/*