Let system_server writes to dumpstate.options property.
Currently, we define 4 hardcoded init services to launch dumpstate with
different command-line options (since dumpstate must be launched by
root):
- bugreport
- bugreportplus
- bugreportwear
- bugreportremote
This approach does not scale well; a better option is to have just one
service, and let the framework pass the extra arguments through a system
property.
BUG: 31649719
Test: manual
Change-Id: I7ebbb7ce6a0fd3588baca6fd76653f87367ed0e5
diff --git a/dumpstate.te b/dumpstate.te
index 2ed725d..dd132a9 100644
--- a/dumpstate.te
+++ b/dumpstate.te
@@ -170,6 +170,8 @@
# Set properties.
# dumpstate_prop is used to share state with the Shell app.
set_prop(dumpstate, dumpstate_prop)
+# dumpstate_options_prop is used to pass extra command-line args.
+set_prop(dumpstate, dumpstate_options_prop)
# systrace support - allow atrace to run
allow dumpstate debugfs_tracing:dir r_dir_perms;
diff --git a/property.te b/property.te
index 2802c0d..2c2ddcc 100644
--- a/property.te
+++ b/property.te
@@ -2,6 +2,7 @@
type shell_prop, property_type, core_property_type;
type debug_prop, property_type, core_property_type;
type dumpstate_prop, property_type, core_property_type;
+type dumpstate_options_prop, property_type;
type persist_debug_prop, property_type, core_property_type;
type debuggerd_prop, property_type, core_property_type;
type dhcp_prop, property_type, core_property_type;
diff --git a/property_contexts b/property_contexts
index 2ae1bb0..34191db 100644
--- a/property_contexts
+++ b/property_contexts
@@ -32,6 +32,7 @@
debug. u:object_r:debug_prop:s0
debug.db. u:object_r:debuggerd_prop:s0
dumpstate. u:object_r:dumpstate_prop:s0
+dumpstate.options u:object_r:dumpstate_options_prop:s0
log. u:object_r:log_prop:s0
log.tag u:object_r:log_tag_prop:s0
log.tag.WifiHAL u:object_r:wifi_log_prop:s0
diff --git a/system_server.te b/system_server.te
index 5ccc05f..b9fe97b 100644
--- a/system_server.te
+++ b/system_server.te
@@ -349,6 +349,7 @@
set_prop(system_server, fingerprint_prop)
set_prop(system_server, device_logging_prop)
set_prop(system_server, wifi_prop)
+set_prop(system_server, dumpstate_options_prop)
userdebug_or_eng(`set_prop(system_server, wifi_log_prop)')
# ctl interface