From 4549ce06a0caea6224cd4be56ecb5734a6681130 Mon Sep 17 00:00:00 2001 From: roynatech2544 Date: Mon, 15 Nov 2021 02:07:21 +0900 Subject: [PATCH] universal7885: interfaces: use seteuid() to set fastcharge sysfs value * SELinux denials type=1400 audit(0.0:731): avc: denied { dac_override } for capability=1 scontext=u:r:hal_battery_default:s0 tcontext=u:r:hal_battery_default:s0 tclass=capability permissive=0 Change-Id: I500682520503e14594eb8661a97ebc0d199c77ff Signed-off-by: roynatech2544 --- .../interfaces/hardware/battery/1.0/default/Battery.cpp | 6 ++++++ .../interfaces/hardware/battery/1.0/default/Battery.h | 3 +++ 2 files changed, 9 insertions(+) diff --git a/universal7885-common/interfaces/hardware/battery/1.0/default/Battery.cpp b/universal7885-common/interfaces/hardware/battery/1.0/default/Battery.cpp index 627379c..5b33778 100644 --- a/universal7885-common/interfaces/hardware/battery/1.0/default/Battery.cpp +++ b/universal7885-common/interfaces/hardware/battery/1.0/default/Battery.cpp @@ -16,6 +16,8 @@ #include #include #include +#include + namespace vendor::eureka::hardware::battery::V1_0 { // Methods from ::android::hardware::battery::V1_0::IBattery follow. @@ -61,6 +63,7 @@ Return Battery::getBatteryStats(battery::V1_0::SysfsType stats) { Return Battery::setBatteryWritable(battery::V1_0::SysfsType stats, battery::V1_0::Number value) { std::ofstream file; std::string filename; + bool FastCharge = false; switch (stats){ case SysfsType::CAPACITY_MAX: filename = "/sys/devices/platform/battery/power_supply/battery/charge_full"; @@ -76,6 +79,7 @@ Return Battery::setBatteryWritable(battery::V1_0::SysfsType stats, batt break; case SysfsType::FASTCHARGE: filename = "/sys/class/sec/switch/afc_disable"; + FastCharge = true; break; case SysfsType::CHARGE: filename = "/sys/devices/platform/battery/power_supply/battery/batt_slate_mode"; @@ -84,6 +88,7 @@ Return Battery::setBatteryWritable(battery::V1_0::SysfsType stats, batt filename = ""; break; } + if(FastCharge) seteuid(ANDROID_SYSTEM_UID); file.open(filename); int write; if (value == Number::ENABLE){ @@ -93,6 +98,7 @@ Return Battery::setBatteryWritable(battery::V1_0::SysfsType stats, batt } file << write; file.close(); + if(FastCharge) seteuid(ANDROID_ROOT_UID); return 0; } diff --git a/universal7885-common/interfaces/hardware/battery/1.0/default/Battery.h b/universal7885-common/interfaces/hardware/battery/1.0/default/Battery.h index 5331afc..34daf76 100644 --- a/universal7885-common/interfaces/hardware/battery/1.0/default/Battery.h +++ b/universal7885-common/interfaces/hardware/battery/1.0/default/Battery.h @@ -18,6 +18,9 @@ #include #include +#define ANDROID_SYSTEM_UID 1000 +#define ANDROID_ROOT_UID 0 + namespace vendor::eureka::hardware::battery::V1_0 { using ::android::hardware::hidl_array;