summaryrefslogtreecommitdiff
path: root/boot/image-android.c
diff options
context:
space:
mode:
authorAaron Kling <[email protected]>2025-01-13 10:11:45 +0100
committerMattijs Korpershoek <[email protected]>2025-01-23 15:19:37 +0100
commit4e599aa73a386dd1ba5091937ef2fc388d01ddd2 (patch)
tree93189f89ea8f2a2ccc37b0a7b68fd8cc787eeade /boot/image-android.c
parenta3b71cc6f5cc74d4edc5808790a3d2999ea3f7fe (diff)
boot: android: Check kcmdline's for NULL in android_image_get_kernel()
kcmdline and kcmdline_extra strings can be NULL. In that case, we still read the content from 0x00000 and pass that to the kernel, which is completely wrong. Fix android_image_get_kernel() to check for NULL before checking if they are empty strings. Fixes: 53a0ddb6d3be ("boot: android: fix extra command line support") Signed-off-by: Aaron Kling <[email protected]> Reviewed-by: Nicolas Belin <[email protected]> Reviewed-by: Julien Masson <[email protected]> Tested-by: Sam Day <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mattijs Korpershoek <[email protected]>
Diffstat (limited to 'boot/image-android.c')
-rw-r--r--boot/image-android.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/boot/image-android.c b/boot/image-android.c
index 60a422dfb74..fa4e14ca469 100644
--- a/boot/image-android.c
+++ b/boot/image-android.c
@@ -337,12 +337,12 @@ int android_image_get_kernel(const void *hdr,
if (bootargs)
len += strlen(bootargs);
- if (*img_data.kcmdline) {
+ if (img_data.kcmdline && *img_data.kcmdline) {
printf("Kernel command line: %s\n", img_data.kcmdline);
len += strlen(img_data.kcmdline) + (len ? 1 : 0); /* +1 for extra space */
}
- if (*img_data.kcmdline_extra) {
+ if (img_data.kcmdline_extra && *img_data.kcmdline_extra) {
printf("Kernel extra command line: %s\n", img_data.kcmdline_extra);
len += strlen(img_data.kcmdline_extra) + (len ? 1 : 0); /* +1 for extra space */
}
@@ -357,13 +357,13 @@ int android_image_get_kernel(const void *hdr,
if (bootargs)
strcpy(newbootargs, bootargs);
- if (*img_data.kcmdline) {
+ if (img_data.kcmdline && *img_data.kcmdline) {
if (*newbootargs) /* If there is something in newbootargs, a space is needed */
strcat(newbootargs, " ");
strcat(newbootargs, img_data.kcmdline);
}
- if (*img_data.kcmdline_extra) {
+ if (img_data.kcmdline_extra && *img_data.kcmdline_extra) {
if (*newbootargs) /* If there is something in newbootargs, a space is needed */
strcat(newbootargs, " ");
strcat(newbootargs, img_data.kcmdline_extra);