On Thu 23 Jan 2025 at 14:28, Mattijs Korpershoek <[email protected]> 
wrote:

> From: Aaron Kling <[email protected]>
> 
> 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]>
> Signed-off-by: Mattijs Korpershoek <[email protected]>
> ---
> Thanks to Aaron for reporting this on the aosp-devs discord and for
> fixing this.
> ---
>  boot/image-android.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/boot/image-android.c b/boot/image-android.c
> index 
> 60a422dfb74a6c683b3cf9d2b19b3ad1dbd0d151..fa4e14ca4698e1dea105388dd2ea590024cafa58
>  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);
> 
> ---
> base-commit: bc157bb6667ed97e33be8ce8436c28baa275b295
> change-id: 20250113-kcmdline-extra-fix-509331e4d7f3
> 
> Best regards,
> -- 
> Mattijs Korpershoek <[email protected]>
> 

Reviewed-by: Julien Masson <[email protected]>

Reply via email to