Reduce C++ wizardry

This commit is contained in:
topjohnwu
2022-03-01 02:13:18 -08:00
committed by John Wu
parent 7999b66c3c
commit be7586137c
11 changed files with 100 additions and 146 deletions

View File

@@ -32,12 +32,10 @@ void denylist_handler(int client, const sock_cred *cred) {
return;
}
DenyResponse res = DenyResponse::ERROR;
int req = read_int(client);
int res = DenyResponse::ERROR;
int code = read_int(client);
auto req = static_cast<DenyRequest>(code);
if (code < 0 || code >= DenyRequest::END) {
if (req < 0 || req >= DenyRequest::END) {
goto done;
}
@@ -58,14 +56,14 @@ void denylist_handler(int client, const sock_cred *cred) {
ls_list(client);
return;
case DenyRequest::STATUS:
res = (zygisk_enabled && denylist_enforced) ? DenyResponse::ENFORCED
: DenyResponse::NOT_ENFORCED;
res = (zygisk_enabled && denylist_enforced)
? DenyResponse::ENFORCED : DenyResponse::NOT_ENFORCED;
break;
case DenyRequest::END:
default:
__builtin_unreachable();
}
done:
write_int(client, static_cast<int>(res));
write_int(client, res);
close(client);
}
@@ -73,7 +71,7 @@ int denylist_cli(int argc, char **argv) {
if (argc < 2)
usage();
DenyRequest req;
int req;
if (argv[1] == "enable"sv)
req = DenyRequest::ENFORCE;
else if (argv[1] == "disable"sv)
@@ -97,16 +95,17 @@ int denylist_cli(int argc, char **argv) {
}
// Send request
int fd = deny_request(req);
int fd = connect_daemon(MainRequest::DENYLIST);
write_int(fd, req);
if (req == DenyRequest::ADD || req == DenyRequest::REMOVE) {
write_string(fd, argv[2]);
write_string(fd, argv[3] ? argv[3] : "");
}
// Get response
int code = read_int(fd);
auto res = (code < 0 || code >= DenyResponse::END) ? DenyResponse::ERROR
: static_cast<DenyResponse>(code);
int res = read_int(fd);
if (res < 0 || res >= DenyResponse::END)
res = DenyResponse::ERROR;
switch (res) {
case DenyResponse::NOT_ENFORCED:
fprintf(stderr, "Denylist is not enforced\n");
@@ -131,7 +130,7 @@ int denylist_cli(int argc, char **argv) {
return -1;
case DenyResponse::OK:
break;
case DenyResponse::END:
default:
__builtin_unreachable();
}

View File

@@ -10,7 +10,8 @@
#define ISOLATED_MAGIC "isolated"
enum class DenyRequest : int {
namespace DenyRequest {
enum : int {
ENFORCE,
DISABLE,
ADD,
@@ -20,8 +21,10 @@ enum class DenyRequest : int {
END
};
}
enum class DenyResponse: int {
namespace DenyResponse {
enum : int {
OK,
ENFORCED,
NOT_ENFORCED,
@@ -33,13 +36,13 @@ enum class DenyResponse: int {
END
};
}
// CLI entries
DenyResponse enable_deny();
DenyResponse disable_deny();
DenyResponse add_list(int client);
DenyResponse rm_list(int client);
int enable_deny();
int disable_deny();
int add_list(int client);
int rm_list(int client);
void ls_list(int client);
// Utility functions
@@ -49,9 +52,3 @@ void revert_unmount();
extern std::atomic<bool> denylist_enforced;
extern std::atomic<int> cached_manager_app_id;
inline int deny_request(DenyRequest req) {
int fd = connect_daemon(DaemonRequest::DENYLIST);
write_int(fd, static_cast<std::underlying_type_t<DenyRequest>>(req));
return fd;
}

View File

@@ -226,7 +226,7 @@ error:
return false;
}
static DenyResponse add_list(const char *pkg, const char *proc) {
static int add_list(const char *pkg, const char *proc) {
if (proc[0] == '\0')
proc = pkg;
@@ -252,13 +252,13 @@ static DenyResponse add_list(const char *pkg, const char *proc) {
return DenyResponse::OK;
}
DenyResponse add_list(int client) {
int add_list(int client) {
string pkg = read_string(client);
string proc = read_string(client);
return add_list(pkg.data(), proc.data());
}
static DenyResponse rm_list(const char *pkg, const char *proc) {
static int rm_list(const char *pkg, const char *proc) {
{
mutex_guard lock(data_lock);
if (!ensure_data())
@@ -298,7 +298,7 @@ static DenyResponse rm_list(const char *pkg, const char *proc) {
return DenyResponse::OK;
}
DenyResponse rm_list(int client) {
int rm_list(int client) {
string pkg = read_string(client);
string proc = read_string(client);
return rm_list(pkg.data(), proc.data());
@@ -342,7 +342,7 @@ static void update_deny_config() {
db_err(err);
}
DenyResponse enable_deny() {
int enable_deny() {
if (denylist_enforced) {
return DenyResponse::OK;
} else {
@@ -377,7 +377,7 @@ DenyResponse enable_deny() {
return DenyResponse::OK;
}
DenyResponse disable_deny() {
int disable_deny() {
if (denylist_enforced) {
denylist_enforced = false;
LOGI("* Disable DenyList\n");