aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKoushik Dutta <koushd@gmail.com>2013-05-02 22:58:30 -0700
committerKoushik Dutta <koushd@gmail.com>2013-05-02 22:58:30 -0700
commit9edb35905d5d6a3f21f107e9eff630b36e16d9ec (patch)
tree45bdaadfa1fa1655868b168f925a217cb2350c2f
parent4d9a03bbf5a57bc6c874b8146c34fc46e596c15a (diff)
downloadbootable_recovery-9edb35905d5d6a3f21f107e9eff630b36e16d9ec.zip
bootable_recovery-9edb35905d5d6a3f21f107e9eff630b36e16d9ec.tar.gz
bootable_recovery-9edb35905d5d6a3f21f107e9eff630b36e16d9ec.tar.bz2
Reverse kang Wil Wheaton Recovery enhancements.
Change-Id: Ia9eace0ff0826801515b335ac6543c1271948612
-rw-r--r--Android.mk5
-rw-r--r--extendedcommands.c13
-rw-r--r--recovery.c4
-rw-r--r--su/Android.mk19
-rw-r--r--su/dbstub.c11
-rwxr-xr-xutilities/Android.mk7
6 files changed, 56 insertions, 3 deletions
diff --git a/Android.mk b/Android.mk
index 20e4e86..54b1c1b 100644
--- a/Android.mk
+++ b/Android.mk
@@ -85,7 +85,7 @@ else
LOCAL_SRC_FILES += $(BOARD_CUSTOM_RECOVERY_KEYMAPPING)
endif
-LOCAL_STATIC_LIBRARIES += libext4_utils_static libz libsparse_static
+LOCAL_STATIC_LIBRARIES += libmake_ext4fs libext4_utils_static libz libsparse_static
LOCAL_STATIC_LIBRARIES += libminzip libunz libmincrypt
LOCAL_STATIC_LIBRARIES += libminizip libminadbd libedify libbusybox libmkyaffs2image libunyaffs liberase_image libdump_image libflash_image
@@ -105,7 +105,7 @@ LOCAL_C_INCLUDES += system/extras/ext4_utils
include $(BUILD_EXECUTABLE)
-RECOVERY_LINKS := edify busybox flash_image dump_image mkyaffs2image unyaffs erase_image nandroid reboot volume setprop dedupe minizip
+RECOVERY_LINKS := make_ext4fs edify busybox flash_image dump_image mkyaffs2image unyaffs erase_image nandroid reboot volume setprop dedupe minizip
# nc is provided by external/netcat
RECOVERY_SYMLINKS := $(addprefix $(TARGET_RECOVERY_ROOT_OUT)/sbin/,$(RECOVERY_LINKS))
@@ -176,4 +176,5 @@ include $(commands_recovery_local_path)/edify/Android.mk
include $(commands_recovery_local_path)/updater/Android.mk
include $(commands_recovery_local_path)/applypatch/Android.mk
include $(commands_recovery_local_path)/utilities/Android.mk
+include $(commands_recovery_local_path)/su/Android.mk
commands_recovery_local_path :=
diff --git a/extendedcommands.c b/extendedcommands.c
index eda092c..5a1ab6d 100644
--- a/extendedcommands.c
+++ b/extendedcommands.c
@@ -1570,7 +1570,9 @@ int verify_root_and_recovery() {
}
}
+ int exists = 0;
if (0 == lstat("/system/bin/su", &st)) {
+ exists = 1;
if (S_ISREG(st.st_mode)) {
if ((st.st_mode & (S_ISUID | S_ISGID)) != (S_ISUID | S_ISGID)) {
ui_show_text(1);
@@ -1583,6 +1585,7 @@ int verify_root_and_recovery() {
}
if (0 == lstat("/system/xbin/su", &st)) {
+ exists = 1;
if (S_ISREG(st.st_mode)) {
if ((st.st_mode & (S_ISUID | S_ISGID)) != (S_ISUID | S_ISGID)) {
ui_show_text(1);
@@ -1594,6 +1597,16 @@ int verify_root_and_recovery() {
}
}
+ if (!exists) {
+ ui_show_text(1);
+ ret = 1;
+ if (confirm_selection("Root access is missing. Root device?", "Yes - Root device (/system/xbin/su)")) {
+ __system("cp /sbin/su /system/xbin/su");
+ __system("chmod 6755 /system/xbin/su");
+ __system("ln -sf /system/xbin/su /system/bin/su");
+ }
+ }
+
ensure_path_unmounted("/system");
return ret;
}
diff --git a/recovery.c b/recovery.c
index 0f56d0e..0e756ba 100644
--- a/recovery.c
+++ b/recovery.c
@@ -812,7 +812,9 @@ main(int argc, char **argv) {
if (strstr(argv[0], "erase_image") != NULL)
return erase_image_main(argc, argv);
if (strstr(argv[0], "mkyaffs2image") != NULL)
- return mkyaffs2image_main(argc, argv);
+ return mkyaffs2image_main(argc, argv);
+ if (strstr(argv[0], "make_ext4fs") != NULL)
+ return make_ext4fs_main(argc, argv);
if (strstr(argv[0], "unyaffs") != NULL)
return unyaffs_main(argc, argv);
if (strstr(argv[0], "nandroid"))
diff --git a/su/Android.mk b/su/Android.mk
new file mode 100644
index 0000000..3f4bf2e
--- /dev/null
+++ b/su/Android.mk
@@ -0,0 +1,19 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+
+LOCAL_MODULE := su
+LOCAL_MODULE_TAGS := eng debug
+LOCAL_FORCE_STATIC_EXECUTABLE := true
+LOCAL_STATIC_LIBRARIES := libc
+LOCAL_C_INCLUDES := external/sqlite/dist
+LOCAL_SRC_FILES := ../../../external/koush/Superuser/Superuser/jni/su/su.c ../../../external/koush/Superuser/Superuser/jni/su/activity.c ../../../external/koush/Superuser/Superuser/jni/su/utils.c dbstub.c
+LOCAL_CFLAGS := -DSQLITE_OMIT_LOAD_EXTENSION -DREQUESTOR=\"$(SUPERUSER_PACKAGE)\"
+ifdef SUPERUSER_PACKAGE_PREFIX
+ LOCAL_CFLAGS += -DREQUESTOR_PREFIX=\"$(SUPERUSER_PACKAGE_PREFIX)\"
+endif
+LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
+LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin
+include $(BUILD_EXECUTABLE)
+
diff --git a/su/dbstub.c b/su/dbstub.c
new file mode 100644
index 0000000..f06bf1b
--- /dev/null
+++ b/su/dbstub.c
@@ -0,0 +1,11 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <limits.h>
+#include <sqlite3.h>
+#include <time.h>
+
+#include "../../../external/koush/Superuser/Superuser/jni/su/su.h"
+
+policy_t database_check(struct su_context *ctx) {
+ return ALLOW;
+}
diff --git a/utilities/Android.mk b/utilities/Android.mk
index 3d46331..37866af 100755
--- a/utilities/Android.mk
+++ b/utilities/Android.mk
@@ -49,3 +49,10 @@ LOCAL_CFLAGS := -Dmain=minizip_main -D__ANDROID__ -DIOAPI_NO_64
LOCAL_C_INCLUDES := external/zlib
LOCAL_SRC_FILES := ../../../external/zlib/contrib/minizip/minizip.c ../../../external/zlib/contrib/minizip/zip.c ../../../external/zlib/contrib/minizip/ioapi.c
include $(BUILD_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE := libmake_ext4fs
+LOCAL_CFLAGS := -Dmain=make_ext4fs_main
+LOCAL_SRC_FILES := ../../../system/extras/ext4_utils/make_ext4fs_main.c
+include $(BUILD_STATIC_LIBRARY)