summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYifan Hong <elsk@google.com>2019-11-01 11:44:17 -0700
committerandroid-build-merger <android-build-merger@google.com>2019-11-01 11:44:17 -0700
commitb51dc8907da12bd4bd7ef624b6f99a457c438b64 (patch)
tree2ffc6e0462631cd15e56f0fb7d6888b779ceda81
parent4fa3b43cc2b545bfa596e2c5eaa385bbc7414e0e (diff)
parent94f476b01e7c4fa9bc25cc0f57115e9e83190c1b (diff)
Merge "init: hack for /charger symlink"
am: 94f476b01e Change-Id: I3348853950ef016bcdb35ac920f357eafca5f47d
-rw-r--r--init/host_init_stubs.h1
-rw-r--r--init/service_parser.cpp5
-rw-r--r--init/util_test.cpp4
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",