From bb0fa90347c9acd0a4b215b9f2244d2761667bdc Mon Sep 17 00:00:00 2001 From: Pierre-Hugues Husson Date: Mon, 3 Dec 2018 20:54:54 +0100 Subject: [PATCH 3/8] Kirin:: Workaround some conflicting Kirin tether SELinux context Some Kirin devices declared some android.hardware.tetheroffload HALs, but they didn't use AOSP contexts. This leads to libselinux aborting when loading hwservice_contexts. Workaround it the ugly way, by making them match. This most likely kills tetheroffload for those devices. --- libselinux/src/label_backends_android.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libselinux/src/label_backends_android.c b/libselinux/src/label_backends_android.c index eaca5947..ab92985b 100644 --- a/libselinux/src/label_backends_android.c +++ b/libselinux/src/label_backends_android.c @@ -62,6 +62,16 @@ static int nodups_specs(struct saved_data *data) curr_spec->property_key)) { if (strcmp(spec_arr[jj].lr.ctx_raw, curr_spec->lr.ctx_raw)) { + if(strcmp(spec_arr[jj].lr.ctx_raw, "u:object_r:hal_ipacm_hwservice:s0") == 0) { + free(spec_arr[jj].lr.ctx_raw); + spec_arr[jj].lr.ctx_raw = strdup("u:object_r:hal_tetheroffload_hwservice:s0"); + continue; + } + if(strcmp(curr_spec->lr.ctx_raw, "u:object_r:hal_ipacm_hwservice:s0") == 0) { + free(curr_spec->lr.ctx_raw); + curr_spec->lr.ctx_raw = strdup("u:object_r:hal_tetheroffload_hwservice:s0"); + continue; + } rc = -1; errno = EINVAL; selinux_log -- 2.25.1