diff options
-rw-r--r-- | init/host_init_stubs.h | 1 | ||||
-rw-r--r-- | init/service_parser.cpp | 5 | ||||
-rw-r--r-- | init/util_test.cpp | 4 |
3 files changed, 8 insertions, 2 deletions
diff --git a/init/host_init_stubs.h b/init/host_init_stubs.h index 5dd5cf1a4..9b33a1c60 100644 --- a/init/host_init_stubs.h +++ b/init/host_init_stubs.h @@ -26,6 +26,7 @@ // android/api-level.h #define __ANDROID_API_P__ 28 +#define __ANDROID_API_Q__ 29 #define __ANDROID_API_R__ 30 // sys/system_properties.h diff --git a/init/service_parser.cpp b/init/service_parser.cpp index e7808a999..e6a341d77 100644 --- a/init/service_parser.cpp +++ b/init/service_parser.cpp @@ -560,6 +560,11 @@ Result<void> ServiceParser::ParseSection(std::vector<std::string>&& args, str_args[0] = "/system/bin/watchdogd"; } } + if (SelinuxGetVendorAndroidVersion() <= __ANDROID_API_Q__) { + if (str_args[0] == "/charger") { + str_args[0] = "/system/bin/charger"; + } + } service_ = std::make_unique<Service>(name, restart_action_subcontext, str_args); return {}; diff --git a/init/util_test.cpp b/init/util_test.cpp index 8947256cf..a8fcc87cb 100644 --- a/init/util_test.cpp +++ b/init/util_test.cpp @@ -61,8 +61,8 @@ TEST(util, ReadFileWorldWiteable) { TEST(util, ReadFileSymbolicLink) { errno = 0; - // lrwxrwxrwx 1 root root 13 1970-01-01 00:00 charger -> /sbin/healthd - auto file_contents = ReadFile("/charger"); + // lrw------- 1 root root 23 2008-12-31 19:00 default.prop -> system/etc/prop.default + auto file_contents = ReadFile("/default.prop"); EXPECT_EQ(ELOOP, errno); ASSERT_FALSE(file_contents); EXPECT_EQ("open() failed: Too many symbolic links encountered", |