Re: [patch] x86, efi: fix pointer math issue in handle_ramdisks()

From: Ingo Molnar
Date: Sat Mar 03 2012 - 02:55:02 EST



* Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote:

> "filename" is a efi_char16_t string so this check for reaching
> the end of the array doesn't work. We need to cast it to char
> pointer before doing the math.

That name should really be changed, 'filename' is a char * by
convention pretty much everywhere in the kernel - so the current
naming is highly misleading and results in bugs like this.

filename_16, filename_2byte or filename_UTF or so would be
suggestive enough to avoid such mishaps in the future.

> @@ -559,7 +559,7 @@ static efi_status_t handle_ramdisks(efi_loaded_image_t *image,
> str++;
>
> while (*str && *str != ' ' && *str != '\n') {
> - if (p >= filename + sizeof(filename))
> + if ((char *)p >= (char *)filename + sizeof(filename))
> break;

I'd also make that void *, because this isnt really a C
character string anymore.

Thanks,

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/