summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
Diffstat (limited to 'common')
-rw-r--r--common/image-android.c34
1 files changed, 31 insertions, 3 deletions
diff --git a/common/image-android.c b/common/image-android.c
index d56380d..78a1f32 100644
--- a/common/image-android.c
+++ b/common/image-android.c
@@ -78,9 +78,14 @@ int android_image_get_kernel(const struct andr_img_hdr *hdr, int verify,
serialnr.high,
serialnr.low);
#endif
-
- setenv("bootargs", commandline);
-
+ if (getenv("bootcmd_android_recovery")) {
+ char new_commandline[ANDR_BOOT_ARGS_SIZE];
+ char cmd_selinux[30] = "androidboot.selinux=disabled";
+ del_sub_str(commandline, cmd_selinux, new_commandline);
+ setenv("bootargs", new_commandline);
+ } else {
+ setenv("bootargs", commandline);
+ }
if (os_data) {
*os_data = (ulong)hdr;
*os_data += hdr->page_size;
@@ -151,3 +156,26 @@ int android_image_get_fdt(const struct andr_img_hdr *hdr,
return 0;
}
+void del_sub_str(const char *str, const char *sub_str, char *cmdline)
+{
+ int str_len = strlen(str);
+ int sub_str_len = strlen(sub_str);
+
+ while (*str != '\0') {
+ while (*str != *sub_str && *str != '\0') {
+ *cmdline = *str;
+ str++;
+ cmdline++;
+ }
+ if (strncmp(str, sub_str, sub_str_len) != 0) {
+ *cmdline = *str;
+ str++;
+ cmdline++;
+ continue;
+ } else {
+ str += sub_str_len;
+ }
+
+ }
+ *cmdline = '\0';
+}