Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP3:GA
grub2.18487
0021-kern-parser-Fix-resource-leak-if-argc-0.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0021-kern-parser-Fix-resource-leak-if-argc-0.patch of Package grub2.18487
From 929c8c2dc91797cbd9c93463b69dd83cc8711fd4 Mon Sep 17 00:00:00 2001 From: Darren Kenny <darren.kenny@oracle.com> Date: Fri, 22 Jan 2021 12:32:41 +0000 Subject: [PATCH 21/41] kern/parser: Fix resource leak if argc == 0 After processing the command-line yet arriving at the point where we are setting argv, we are allocating memory, even if argc == 0, which makes no sense since we never put anything into the allocated argv. The solution is to simply return that we've successfully processed the arguments but that argc == 0, and also ensure that argv is NULL when we're not allocating anything in it. There are only 2 callers of this function, and both are handling a zero value in argc assuming nothing is allocated in argv. Fixes: CID 96680 Signed-off-by: Darren Kenny <darren.kenny@oracle.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com> --- grub-core/kern/parser.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/grub-core/kern/parser.c b/grub-core/kern/parser.c index 619db3122..d1cf061ad 100644 --- a/grub-core/kern/parser.c +++ b/grub-core/kern/parser.c @@ -146,6 +146,7 @@ grub_parser_split_cmdline (const char *cmdline, int i; *argc = 0; + *argv = NULL; do { if (!rd || !*rd) @@ -207,6 +208,10 @@ grub_parser_split_cmdline (const char *cmdline, (*argc)++; } + /* If there are no args, then we're done. */ + if (!*argc) + return 0; + /* Reserve memory for the return values. */ args = grub_malloc (bp - buffer); if (!args) -- 2.26.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor