diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/image-android.c | 34 |
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'; +} |