kernel: Resolve compilation errors
This commit is contained in:
36
kernel/ksu.h
36
kernel/ksu.h
@@ -7,30 +7,7 @@
|
|||||||
#define KERNEL_SU_VERSION KSU_VERSION
|
#define KERNEL_SU_VERSION KSU_VERSION
|
||||||
#define KERNEL_SU_OPTION 0xDEADBEEF
|
#define KERNEL_SU_OPTION 0xDEADBEEF
|
||||||
|
|
||||||
#define CMD_GRANT_ROOT 0
|
extern bool ksu_uid_scanner_enabled;
|
||||||
#define CMD_BECOME_MANAGER 1
|
|
||||||
#define CMD_GET_VERSION 2
|
|
||||||
#define CMD_ALLOW_SU 3
|
|
||||||
#define CMD_DENY_SU 4
|
|
||||||
#define CMD_GET_ALLOW_LIST 5
|
|
||||||
#define CMD_GET_DENY_LIST 6
|
|
||||||
#define CMD_REPORT_EVENT 7
|
|
||||||
#define CMD_SET_SEPOLICY 8
|
|
||||||
#define CMD_CHECK_SAFEMODE 9
|
|
||||||
#define CMD_GET_APP_PROFILE 10
|
|
||||||
#define CMD_SET_APP_PROFILE 11
|
|
||||||
#define CMD_UID_GRANTED_ROOT 12
|
|
||||||
#define CMD_UID_SHOULD_UMOUNT 13
|
|
||||||
#define CMD_IS_SU_ENABLED 14
|
|
||||||
#define CMD_ENABLE_SU 15
|
|
||||||
|
|
||||||
#define CMD_GET_FULL_VERSION 0xC0FFEE1A
|
|
||||||
|
|
||||||
#define CMD_ENABLE_KPM 100
|
|
||||||
#define CMD_HOOK_TYPE 101
|
|
||||||
#define CMD_DYNAMIC_MANAGER 103
|
|
||||||
#define CMD_GET_MANAGERS 104
|
|
||||||
#define CMD_ENABLE_UID_SCANNER 105
|
|
||||||
|
|
||||||
#define EVENT_POST_FS_DATA 1
|
#define EVENT_POST_FS_DATA 1
|
||||||
#define EVENT_BOOT_COMPLETED 2
|
#define EVENT_BOOT_COMPLETED 2
|
||||||
@@ -52,12 +29,23 @@
|
|||||||
#define DYNAMIC_MANAGER_OP_GET 1
|
#define DYNAMIC_MANAGER_OP_GET 1
|
||||||
#define DYNAMIC_MANAGER_OP_CLEAR 2
|
#define DYNAMIC_MANAGER_OP_CLEAR 2
|
||||||
|
|
||||||
|
#define UID_SCANNER_OP_GET_STATUS 0
|
||||||
|
#define UID_SCANNER_OP_TOGGLE 1
|
||||||
|
#define UID_SCANNER_OP_CLEAR_ENV 2
|
||||||
|
|
||||||
struct dynamic_manager_user_config {
|
struct dynamic_manager_user_config {
|
||||||
unsigned int operation;
|
unsigned int operation;
|
||||||
unsigned int size;
|
unsigned int size;
|
||||||
char hash[65];
|
char hash[65];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct manager_list_info {
|
||||||
|
int count;
|
||||||
|
struct {
|
||||||
|
uid_t uid;
|
||||||
|
int signature_index;
|
||||||
|
} managers[2];
|
||||||
|
};
|
||||||
|
|
||||||
struct root_profile {
|
struct root_profile {
|
||||||
int32_t uid;
|
int32_t uid;
|
||||||
|
|||||||
@@ -21,10 +21,6 @@
|
|||||||
#include "throne_comm.h"
|
#include "throne_comm.h"
|
||||||
#include "dynamic_manager.h"
|
#include "dynamic_manager.h"
|
||||||
|
|
||||||
#ifdef CONFIG_KSU_MANUAL_SU
|
|
||||||
#include "manual_su.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Forward declarations from core_hook.c
|
// Forward declarations from core_hook.c
|
||||||
extern void escape_to_root(void);
|
extern void escape_to_root(void);
|
||||||
extern void nuke_ext4_sysfs(void);
|
extern void nuke_ext4_sysfs(void);
|
||||||
@@ -520,49 +516,6 @@ static int do_enable_uid_scanner(void __user *arg)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_KSU_MANUAL_SU
|
|
||||||
static bool system_uid_check(void)
|
|
||||||
{
|
|
||||||
return current_uid().val <= 2000;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int do_manual_su(void __user *arg)
|
|
||||||
{
|
|
||||||
struct ksu_manual_su_cmd cmd;
|
|
||||||
struct manual_su_request request;
|
|
||||||
int res;
|
|
||||||
|
|
||||||
if (copy_from_user(&cmd, arg, sizeof(cmd))) {
|
|
||||||
pr_err("manual_su: copy_from_user failed\n");
|
|
||||||
return -EFAULT;
|
|
||||||
}
|
|
||||||
|
|
||||||
pr_info("manual_su request, option=%d, uid=%d, pid=%d\n",
|
|
||||||
cmd.option, cmd.target_uid, cmd.target_pid);
|
|
||||||
|
|
||||||
memset(&request, 0, sizeof(request));
|
|
||||||
request.target_uid = cmd.target_uid;
|
|
||||||
request.target_pid = cmd.target_pid;
|
|
||||||
|
|
||||||
if (cmd.option == MANUAL_SU_OP_GENERATE_TOKEN ||
|
|
||||||
cmd.option == MANUAL_SU_OP_ESCALATE) {
|
|
||||||
memcpy(request.token_buffer, cmd.token_buffer, sizeof(request.token_buffer));
|
|
||||||
}
|
|
||||||
|
|
||||||
res = ksu_handle_manual_su_request(cmd.option, &request);
|
|
||||||
|
|
||||||
if (cmd.option == MANUAL_SU_OP_GENERATE_TOKEN && res == 0) {
|
|
||||||
memcpy(cmd.token_buffer, request.token_buffer, sizeof(cmd.token_buffer));
|
|
||||||
if (copy_to_user(arg, &cmd, sizeof(cmd))) {
|
|
||||||
pr_err("manual_su: copy_to_user failed\n");
|
|
||||||
return -EFAULT;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// IOCTL handlers mapping table
|
// IOCTL handlers mapping table
|
||||||
static const struct ksu_ioctl_cmd_map ksu_ioctl_handlers[] = {
|
static const struct ksu_ioctl_cmd_map ksu_ioctl_handlers[] = {
|
||||||
{ .cmd = KSU_IOCTL_GRANT_ROOT, .name = "GRANT_ROOT", .handler = do_grant_root, .perm_check = allowed_for_su },
|
{ .cmd = KSU_IOCTL_GRANT_ROOT, .name = "GRANT_ROOT", .handler = do_grant_root, .perm_check = allowed_for_su },
|
||||||
@@ -585,9 +538,6 @@ static const struct ksu_ioctl_cmd_map ksu_ioctl_handlers[] = {
|
|||||||
{ .cmd = KSU_IOCTL_DYNAMIC_MANAGER, .name = "SET_DYNAMIC_MANAGER", .handler = do_dynamic_manager, .perm_check = manager_or_root},
|
{ .cmd = KSU_IOCTL_DYNAMIC_MANAGER, .name = "SET_DYNAMIC_MANAGER", .handler = do_dynamic_manager, .perm_check = manager_or_root},
|
||||||
{ .cmd = KSU_IOCTL_GET_MANAGERS, .name = "GET_MANAGERS", .handler = do_get_managers, .perm_check = manager_or_root},
|
{ .cmd = KSU_IOCTL_GET_MANAGERS, .name = "GET_MANAGERS", .handler = do_get_managers, .perm_check = manager_or_root},
|
||||||
{ .cmd = KSU_IOCTL_ENABLE_UID_SCANNER, .name = "SET_ENABLE_UID_SCANNER", .handler = do_enable_uid_scanner, .perm_check = manager_or_root},
|
{ .cmd = KSU_IOCTL_ENABLE_UID_SCANNER, .name = "SET_ENABLE_UID_SCANNER", .handler = do_enable_uid_scanner, .perm_check = manager_or_root},
|
||||||
#ifdef CONFIG_KSU_MANUAL_SU
|
|
||||||
{ .cmd = KSU_IOCTL_MANUAL_SU, .name = "MANUAL_SU", .handler = do_manual_su, .perm_check = system_uid_check},
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_KPM
|
#ifdef CONFIG_KPM
|
||||||
{ .cmd = KSU_IOCTL_KPM, .name = "KPM_OPERATION", .handler = do_kpm, .perm_check = manager_or_root},
|
{ .cmd = KSU_IOCTL_KPM, .name = "KPM_OPERATION", .handler = do_kpm, .perm_check = manager_or_root},
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -104,15 +104,6 @@ struct ksu_enable_uid_scanner_cmd {
|
|||||||
void __user *status_ptr; // Input: pointer to store status (for UID_SCANNER_OP_GET_STATUS)
|
void __user *status_ptr; // Input: pointer to store status (for UID_SCANNER_OP_GET_STATUS)
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_KSU_MANUAL_SU
|
|
||||||
struct ksu_manual_su_cmd {
|
|
||||||
__u32 option; // Input: operation type (MANUAL_SU_OP_GENERATE_TOKEN, MANUAL_SU_OP_ESCALATE, MANUAL_SU_OP_ADD_PENDING)
|
|
||||||
__u32 target_uid; // Input: target UID
|
|
||||||
__u32 target_pid; // Input: target PID
|
|
||||||
char token_buffer[33]; // Input/Output: token buffer
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// IOCTL command definitions
|
// IOCTL command definitions
|
||||||
#define KSU_IOCTL_GRANT_ROOT _IOC(_IOC_NONE, 'K', 1, 0)
|
#define KSU_IOCTL_GRANT_ROOT _IOC(_IOC_NONE, 'K', 1, 0)
|
||||||
#define KSU_IOCTL_GET_INFO _IOC(_IOC_READ, 'K', 2, 0)
|
#define KSU_IOCTL_GET_INFO _IOC(_IOC_READ, 'K', 2, 0)
|
||||||
@@ -135,9 +126,6 @@ struct ksu_manual_su_cmd {
|
|||||||
#define KSU_IOCTL_DYNAMIC_MANAGER _IOC(_IOC_READ|_IOC_WRITE, 'K', 103, 0)
|
#define KSU_IOCTL_DYNAMIC_MANAGER _IOC(_IOC_READ|_IOC_WRITE, 'K', 103, 0)
|
||||||
#define KSU_IOCTL_GET_MANAGERS _IOC(_IOC_READ|_IOC_WRITE, 'K', 104, 0)
|
#define KSU_IOCTL_GET_MANAGERS _IOC(_IOC_READ|_IOC_WRITE, 'K', 104, 0)
|
||||||
#define KSU_IOCTL_ENABLE_UID_SCANNER _IOC(_IOC_READ|_IOC_WRITE, 'K', 105, 0)
|
#define KSU_IOCTL_ENABLE_UID_SCANNER _IOC(_IOC_READ|_IOC_WRITE, 'K', 105, 0)
|
||||||
#ifdef CONFIG_KSU_MANUAL_SU
|
|
||||||
#define KSU_IOCTL_MANUAL_SU _IOC(_IOC_READ|_IOC_WRITE, 'K', 106, 0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// IOCTL handler types
|
// IOCTL handler types
|
||||||
typedef int (*ksu_ioctl_handler_t)(void __user *arg);
|
typedef int (*ksu_ioctl_handler_t)(void __user *arg);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include "klog.h"
|
#include "klog.h"
|
||||||
#include "throne_comm.h"
|
#include "throne_comm.h"
|
||||||
#include "kernel_compat.h"
|
#include "kernel_compat.h"
|
||||||
|
#include "ksu.h"
|
||||||
|
|
||||||
#define PROC_UID_SCANNER "ksu_uid_scanner"
|
#define PROC_UID_SCANNER "ksu_uid_scanner"
|
||||||
#define UID_SCANNER_STATE_FILE "/data/adb/ksu/.uid_scanner"
|
#define UID_SCANNER_STATE_FILE "/data/adb/ksu/.uid_scanner"
|
||||||
@@ -18,7 +19,6 @@ static struct work_struct scan_work;
|
|||||||
static struct work_struct ksu_state_save_work;
|
static struct work_struct ksu_state_save_work;
|
||||||
static struct work_struct ksu_state_load_work;
|
static struct work_struct ksu_state_load_work;
|
||||||
|
|
||||||
extern bool ksu_uid_scanner_enabled;
|
|
||||||
|
|
||||||
// Signal userspace to rescan
|
// Signal userspace to rescan
|
||||||
static bool need_rescan = false;
|
static bool need_rescan = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user