Update SuperSU for 4.3 SELinux, 2.6.1.0
Change-Id: Ib7f882db8a8c61d1156c03468208205124132b6c
This commit is contained in:
2
prebuilt/99SuperSUDaemon
Executable file
2
prebuilt/99SuperSUDaemon
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/system/bin/sh
|
||||
/system/xbin/daemonsu --auto-daemon &
|
||||
@@ -234,6 +234,24 @@ ifneq ($(TW_EXCLUDE_SUPERSU), true)
|
||||
LOCAL_SRC_FILES := $(LOCAL_MODULE)
|
||||
include $(BUILD_PREBUILT)
|
||||
|
||||
#install-recovery.sh
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := install-recovery.sh
|
||||
LOCAL_MODULE_TAGS := eng
|
||||
LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
|
||||
LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/supersu
|
||||
LOCAL_SRC_FILES := $(LOCAL_MODULE)
|
||||
include $(BUILD_PREBUILT)
|
||||
|
||||
#99SuperSUDaemon
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := 99SuperSUDaemon
|
||||
LOCAL_MODULE_TAGS := eng
|
||||
LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
|
||||
LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/supersu
|
||||
LOCAL_SRC_FILES := $(LOCAL_MODULE)
|
||||
include $(BUILD_PREBUILT)
|
||||
|
||||
#SuperSU special installer APK
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := Superuser.apk
|
||||
|
||||
BIN
prebuilt/chattr
Executable file
BIN
prebuilt/chattr
Executable file
Binary file not shown.
19
prebuilt/install-recovery.sh
Executable file
19
prebuilt/install-recovery.sh
Executable file
@@ -0,0 +1,19 @@
|
||||
#!/system/bin/sh
|
||||
|
||||
# If you're implementing this in a custom kernel/firmware,
|
||||
# I suggest you use a different script name, and add a service
|
||||
# to launch it from init.rc
|
||||
|
||||
# Launches SuperSU in daemon mode only on Android 4.3+.
|
||||
# Nothing will happen on 4.2.x or older.
|
||||
# If you want to force loading the daemon, use "--daemon" instead
|
||||
|
||||
/system/xbin/daemonsu --auto-daemon &
|
||||
|
||||
# Some apps like to run stuff from this script as well, but the
|
||||
# installer will have done "chattr +i" on this file to prevent
|
||||
# accidental modification and deletion. In your code, just search
|
||||
# this file for "install-recovery-2.sh", and if present, write
|
||||
# there instead.
|
||||
|
||||
/system/etc/install-recovery-2.sh
|
||||
BIN
prebuilt/su
BIN
prebuilt/su
Binary file not shown.
@@ -560,6 +560,17 @@ bool TWFunc::Fix_su_Perms(void) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
file = "/system/xbin/daemonsu";
|
||||
if (TWFunc::Path_Exists(file)) {
|
||||
if (chown(file.c_str(), 0, 0) != 0) {
|
||||
LOGERR("Failed to chown '%s'\n", file.c_str());
|
||||
return false;
|
||||
}
|
||||
if (tw_chmod(file, "6755") != 0) {
|
||||
LOGERR("Failed to chmod '%s'\n", file.c_str());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
file = "/system/bin/.ext/.su";
|
||||
if (TWFunc::Path_Exists(file)) {
|
||||
if (chown(file.c_str(), 0, 0) != 0) {
|
||||
@@ -571,6 +582,28 @@ bool TWFunc::Fix_su_Perms(void) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
file = "/system/etc/install-recovery.sh";
|
||||
if (TWFunc::Path_Exists(file)) {
|
||||
if (chown(file.c_str(), 0, 0) != 0) {
|
||||
LOGERR("Failed to chown '%s'\n", file.c_str());
|
||||
return false;
|
||||
}
|
||||
if (tw_chmod(file, "0755") != 0) {
|
||||
LOGERR("Failed to chmod '%s'\n", file.c_str());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
file = "/system/etc/init.d/99SuperSUDaemon";
|
||||
if (TWFunc::Path_Exists(file)) {
|
||||
if (chown(file.c_str(), 0, 0) != 0) {
|
||||
LOGERR("Failed to chown '%s'\n", file.c_str());
|
||||
return false;
|
||||
}
|
||||
if (tw_chmod(file, "0755") != 0) {
|
||||
LOGERR("Failed to chmod '%s'\n", file.c_str());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
file = "/system/app/Superuser.apk";
|
||||
if (TWFunc::Path_Exists(file)) {
|
||||
if (chown(file.c_str(), 0, 0) != 0) {
|
||||
@@ -696,13 +729,42 @@ int TWFunc::tw_chmod(string fn, string mode) {
|
||||
}
|
||||
|
||||
bool TWFunc::Install_SuperSU(void) {
|
||||
string status;
|
||||
|
||||
if (!PartitionManager.Mount_By_Path("/system", true))
|
||||
return false;
|
||||
|
||||
TWFunc::Exec_Cmd("/sbin/chattr -i /system/xbin/su", status);
|
||||
if (copy_file("/supersu/su", "/system/xbin/su", 0755) != 0) {
|
||||
LOGERR("Failed to copy su binary to /system/bin\n");
|
||||
return false;
|
||||
}
|
||||
if (!Path_Exists("/system/bin/.ext")) {
|
||||
mkdir("/system/bin/.ext", 0777);
|
||||
}
|
||||
TWFunc::Exec_Cmd("/sbin/chattr -i /system/bin/.ext/su", status);
|
||||
if (copy_file("/supersu/su", "/system/bin/.ext/su", 0755) != 0) {
|
||||
LOGERR("Failed to copy su binary to /system/bin/.ext/su\n");
|
||||
return false;
|
||||
}
|
||||
TWFunc::Exec_Cmd("/sbin/chattr -i /system/xbin/daemonsu", status);
|
||||
if (copy_file("/supersu/su", "/system/xbin/daemonsu", 0755) != 0) {
|
||||
LOGERR("Failed to copy su binary to /system/xbin/daemonsu\n");
|
||||
return false;
|
||||
}
|
||||
if (Path_Exists("/system/etc/init.d")) {
|
||||
TWFunc::Exec_Cmd("/sbin/chattr -i /system/etc/init.d/99SuperSUDaemon", status);
|
||||
if (copy_file("/supersu/99SuperSUDaemon", "/system/etc/init.d/99SuperSUDaemon", 0755) != 0) {
|
||||
LOGERR("Failed to copy 99SuperSUDaemon to /system/etc/init.d/99SuperSUDaemon\n");
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
TWFunc::Exec_Cmd("/sbin/chattr -i /system/etc/install-recovery.sh", status);
|
||||
if (copy_file("/supersu/install-recovery.sh", "/system/etc/install-recovery.sh", 0755) != 0) {
|
||||
LOGERR("Failed to copy install-recovery.sh to /system/etc/install-recovery.sh\n");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (copy_file("/supersu/Superuser.apk", "/system/app/Superuser.apk", 0644) != 0) {
|
||||
LOGERR("Failed to copy Superuser app to /system/app\n");
|
||||
return false;
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
#ifndef _VARIABLES_HEADER_
|
||||
#define _VARIABLES_HEADER_
|
||||
|
||||
#define TW_VERSION_STR "2.6.0.4"
|
||||
#define TW_VERSION_STR "2.6.1.0"
|
||||
|
||||
#define TW_USE_COMPRESSION_VAR "tw_use_compression"
|
||||
#define TW_FILENAME "tw_filename"
|
||||
|
||||
Reference in New Issue
Block a user