diff options
author | Marta Rybczynska <rybczynska@gmail.com> | 2022-02-18 11:05:12 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2022-03-02 00:21:36 +0000 |
commit | ee33ef82427d9144258fac3423f4b199132d542b (patch) | |
tree | 53de7369c00919907069b1d05a63641438dea7e8 /meta/recipes-bsp | |
parent | 058d20254f246bba2f1c23b63347ec351a0a919d (diff) | |
download | poky-ee33ef82427d9144258fac3423f4b199132d542b.tar.gz |
grub: fix wrong handling of argc == 0
This change fixes wrong handling of argc == 0 causing a memory leak.
It is a part of a security series [1].
[1] https://lists.gnu.org/archive/html/grub-devel/2021-03/msg00007.html
(From OE-Core rev: 8e537ef16bc1ef4bc807cc165d3b7eb1301578de)
Signed-off-by: Marta Rybczynska <marta.rybczynska@huawei.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-bsp')
-rw-r--r-- | meta/recipes-bsp/grub/files/0004-kern-parser-Fix-resource-leak-if-argc-0.patch | 50 | ||||
-rw-r--r-- | meta/recipes-bsp/grub/grub2.inc | 1 |
2 files changed, 51 insertions, 0 deletions
diff --git a/meta/recipes-bsp/grub/files/0004-kern-parser-Fix-resource-leak-if-argc-0.patch b/meta/recipes-bsp/grub/files/0004-kern-parser-Fix-resource-leak-if-argc-0.patch new file mode 100644 index 0000000000..933416605c --- /dev/null +++ b/meta/recipes-bsp/grub/files/0004-kern-parser-Fix-resource-leak-if-argc-0.patch | |||
@@ -0,0 +1,50 @@ | |||
1 | From 8861fa6226f7229105722ba669465e879b56ee2b Mon Sep 17 00:00:00 2001 | ||
2 | From: Darren Kenny <darren.kenny@oracle.com> | ||
3 | Date: Fri, 22 Jan 2021 12:32:41 +0000 | ||
4 | Subject: [PATCH] kern/parser: Fix resource leak if argc == 0 | ||
5 | |||
6 | After processing the command-line yet arriving at the point where we are | ||
7 | setting argv, we are allocating memory, even if argc == 0, which makes | ||
8 | no sense since we never put anything into the allocated argv. | ||
9 | |||
10 | The solution is to simply return that we've successfully processed the | ||
11 | arguments but that argc == 0, and also ensure that argv is NULL when | ||
12 | we're not allocating anything in it. | ||
13 | |||
14 | There are only 2 callers of this function, and both are handling a zero | ||
15 | value in argc assuming nothing is allocated in argv. | ||
16 | |||
17 | Fixes: CID 96680 | ||
18 | |||
19 | Signed-off-by: Darren Kenny <darren.kenny@oracle.com> | ||
20 | Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com> | ||
21 | |||
22 | Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=d06161b035dde4769199ad65aa0a587a5920012b] | ||
23 | Signed-off-by: Marta Rybczynska <marta.rybczynska@huawei.com> | ||
24 | --- | ||
25 | grub-core/kern/parser.c | 5 +++++ | ||
26 | 1 file changed, 5 insertions(+) | ||
27 | |||
28 | diff --git a/grub-core/kern/parser.c b/grub-core/kern/parser.c | ||
29 | index 619db31..d1cf061 100644 | ||
30 | --- a/grub-core/kern/parser.c | ||
31 | +++ b/grub-core/kern/parser.c | ||
32 | @@ -146,6 +146,7 @@ grub_parser_split_cmdline (const char *cmdline, | ||
33 | int i; | ||
34 | |||
35 | *argc = 0; | ||
36 | + *argv = NULL; | ||
37 | do | ||
38 | { | ||
39 | if (!rd || !*rd) | ||
40 | @@ -207,6 +208,10 @@ grub_parser_split_cmdline (const char *cmdline, | ||
41 | (*argc)++; | ||
42 | } | ||
43 | |||
44 | + /* If there are no args, then we're done. */ | ||
45 | + if (!*argc) | ||
46 | + return 0; | ||
47 | + | ||
48 | /* Reserve memory for the return values. */ | ||
49 | args = grub_malloc (bp - buffer); | ||
50 | if (!args) | ||
diff --git a/meta/recipes-bsp/grub/grub2.inc b/meta/recipes-bsp/grub/grub2.inc index 678aa5c4e2..2e4e6d7ac2 100644 --- a/meta/recipes-bsp/grub/grub2.inc +++ b/meta/recipes-bsp/grub/grub2.inc | |||
@@ -50,6 +50,7 @@ SRC_URI = "${GNU_MIRROR}/grub/grub-${PV}.tar.gz \ | |||
50 | file://0001-mmap-Fix-memory-leak-when-iterating-over-mapped-memo.patch \ | 50 | file://0001-mmap-Fix-memory-leak-when-iterating-over-mapped-memo.patch \ |
51 | file://0002-net-net-Fix-possible-dereference-to-of-a-NULL-pointe.patch \ | 51 | file://0002-net-net-Fix-possible-dereference-to-of-a-NULL-pointe.patch \ |
52 | file://0003-net-tftp-Fix-dangling-memory-pointer.patch \ | 52 | file://0003-net-tftp-Fix-dangling-memory-pointer.patch \ |
53 | file://0004-kern-parser-Fix-resource-leak-if-argc-0.patch \ | ||
53 | " | 54 | " |
54 | SRC_URI[md5sum] = "5ce674ca6b2612d8939b9e6abed32934" | 55 | SRC_URI[md5sum] = "5ce674ca6b2612d8939b9e6abed32934" |
55 | SRC_URI[sha256sum] = "f10c85ae3e204dbaec39ae22fa3c5e99f0665417e91c2cb49b7e5031658ba6ea" | 56 | SRC_URI[sha256sum] = "f10c85ae3e204dbaec39ae22fa3c5e99f0665417e91c2cb49b7e5031658ba6ea" |