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 <whiteshell2544@naver.com>
This commit is contained in:
roynatech2544 2021-11-15 02:07:21 +09:00
commit 4549ce06a0
No known key found for this signature in database
GPG key ID: 9675C32163D88D30
2 changed files with 9 additions and 0 deletions

View file

@ -16,6 +16,8 @@
#include <iostream>
#include <fstream>
#include <sstream>
#include <unistd.h>
namespace vendor::eureka::hardware::battery::V1_0 {
// Methods from ::android::hardware::battery::V1_0::IBattery follow.
@ -61,6 +63,7 @@ Return<int32_t> Battery::getBatteryStats(battery::V1_0::SysfsType stats) {
Return<int32_t> 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<int32_t> 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<int32_t> 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<int32_t> Battery::setBatteryWritable(battery::V1_0::SysfsType stats, batt
}
file << write;
file.close();
if(FastCharge) seteuid(ANDROID_ROOT_UID);
return 0;
}

View file

@ -18,6 +18,9 @@
#include <hidl/MQDescriptor.h>
#include <hidl/Status.h>
#define ANDROID_SYSTEM_UID 1000
#define ANDROID_ROOT_UID 0
namespace vendor::eureka::hardware::battery::V1_0 {
using ::android::hardware::hidl_array;