manager: improve become_manager validation
This commit is contained in:
@@ -11,8 +11,11 @@
|
|||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
JNIEXPORT jboolean JNICALL
|
JNIEXPORT jboolean JNICALL
|
||||||
Java_me_weishu_kernelsu_Natives_becomeManager(JNIEnv *env, jclass clazz) {
|
Java_me_weishu_kernelsu_Natives_becomeManager(JNIEnv *env, jclass clazz, jstring pkg) {
|
||||||
return become_manager();
|
auto cpkg = env->GetStringUTFChars(pkg, nullptr);
|
||||||
|
auto result = become_manager(cpkg);
|
||||||
|
env->ReleaseStringUTFChars(pkg, cpkg);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
#include <sys/prctl.h>
|
#include <sys/prctl.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "ksu.h"
|
#include "ksu.h"
|
||||||
|
|
||||||
@@ -24,8 +26,10 @@ static bool ksuctl(int cmd, void* arg1, void* arg2) {
|
|||||||
return result == KERNEL_SU_OPTION;
|
return result == KERNEL_SU_OPTION;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool become_manager() {
|
bool become_manager(const char* pkg) {
|
||||||
return ksuctl(CMD_BECOME_MANAGER, nullptr, nullptr);
|
char param[128];
|
||||||
|
sprintf(param, "/data/data/%s", pkg);
|
||||||
|
return ksuctl(CMD_BECOME_MANAGER, param, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
int get_version() {
|
int get_version() {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
#ifndef KERNELSU_KSU_H
|
#ifndef KERNELSU_KSU_H
|
||||||
#define KERNELSU_KSU_H
|
#define KERNELSU_KSU_H
|
||||||
|
|
||||||
bool become_manager();
|
bool become_manager(const char*);
|
||||||
|
|
||||||
int get_version();
|
int get_version();
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ public final class Natives {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// become root manager, return true if success.
|
// become root manager, return true if success.
|
||||||
public static native boolean becomeManager();
|
public static native boolean becomeManager(String pkg);
|
||||||
|
|
||||||
public static native int getVersion();
|
public static native int getVersion();
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ fun Home() {
|
|||||||
val secondaryText: String
|
val secondaryText: String
|
||||||
|
|
||||||
val kernelVersion = getKernelVersion()
|
val kernelVersion = getKernelVersion()
|
||||||
val isManager = Natives.becomeManager()
|
val isManager = Natives.becomeManager(LocalContext.current.packageName)
|
||||||
|
|
||||||
if (kernelVersion.isGKI()) {
|
if (kernelVersion.isGKI()) {
|
||||||
// GKI kernel
|
// GKI kernel
|
||||||
|
|||||||
Reference in New Issue
Block a user