diff mbox series

efi/libstub: prevent read overflow in find_file_option()

Message ID YIK0D1JyV6ZeDMSS@mwanda
State Accepted
Commit c4039b29fe9637e1135912813f830994af4c867f
Headers show
Series efi/libstub: prevent read overflow in find_file_option() | expand

Commit Message

Dan Carpenter April 23, 2021, 11:48 a.m. UTC
If the buffer has slashes up to the end then this will read past the end
of the array.  I don't anticipate that this is an issue for many people
in real life, but it's the right thing to do and it makes static
checkers happy.

Fixes: 7a88a6227dc7 ("efi/libstub: Fix path separator regression")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
 drivers/firmware/efi/libstub/file.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Ard Biesheuvel May 10, 2021, 3:38 p.m. UTC | #1
On Fri, 23 Apr 2021 at 13:48, Dan Carpenter <dan.carpenter@oracle.com> wrote:
>

> If the buffer has slashes up to the end then this will read past the end

> of the array.  I don't anticipate that this is an issue for many people

> in real life, but it's the right thing to do and it makes static

> checkers happy.

>

> Fixes: 7a88a6227dc7 ("efi/libstub: Fix path separator regression")

> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

> ---

>  drivers/firmware/efi/libstub/file.c | 2 +-

>  1 file changed, 1 insertion(+), 1 deletion(-)

>

> diff --git a/drivers/firmware/efi/libstub/file.c b/drivers/firmware/efi/libstub/file.c

> index 4e81c6077188..dd95f330fe6e 100644

> --- a/drivers/firmware/efi/libstub/file.c

> +++ b/drivers/firmware/efi/libstub/file.c

> @@ -103,7 +103,7 @@ static int find_file_option(const efi_char16_t *cmdline, int cmdline_len,

>                 return 0;

>

>         /* Skip any leading slashes */

> -       while (cmdline[i] == L'/' || cmdline[i] == L'\\')

> +       while (i < cmdline_len && (cmdline[i] == L'/' || cmdline[i] == L'\\'))

>                 i++;

>

>         while (--result_len > 0 && i < cmdline_len) {

> --

> 2.30.2

>


Thanks Dan, I will queue this up.
diff mbox series

Patch

diff --git a/drivers/firmware/efi/libstub/file.c b/drivers/firmware/efi/libstub/file.c
index 4e81c6077188..dd95f330fe6e 100644
--- a/drivers/firmware/efi/libstub/file.c
+++ b/drivers/firmware/efi/libstub/file.c
@@ -103,7 +103,7 @@  static int find_file_option(const efi_char16_t *cmdline, int cmdline_len,
 		return 0;
 
 	/* Skip any leading slashes */
-	while (cmdline[i] == L'/' || cmdline[i] == L'\\')
+	while (i < cmdline_len && (cmdline[i] == L'/' || cmdline[i] == L'\\'))
 		i++;
 
 	while (--result_len > 0 && i < cmdline_len) {