39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 | |
| From: Javier Martinez Canillas <javierm@redhat.com>
 | |
| Date: Mon, 16 Mar 2020 13:51:45 +0100
 | |
| Subject: [PATCH] blscfg: return NULL instead of a zero-length array in
 | |
|  bls_make_list()
 | |
| 
 | |
| The bls_make_list() function returns a list of all the values for a given
 | |
| key and if there is none a NULL pointer should be returned. But currently
 | |
| is returnin a zero-length array instead.
 | |
| 
 | |
| This makes the callers to wrongly assume that there are values for a key
 | |
| and populate wrong menu entries. For example menu entries are populated
 | |
| with an initrd command even if there is no initrd fiel in the BLS file.
 | |
| 
 | |
| Resolves: rhbz#1806022
 | |
| 
 | |
| Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
 | |
| ---
 | |
|  grub-core/commands/blscfg.c | 6 ++++++
 | |
|  1 file changed, 6 insertions(+)
 | |
| 
 | |
| diff --git a/grub-core/commands/blscfg.c b/grub-core/commands/blscfg.c
 | |
| index 24e35a40f24..9263a5c1a02 100644
 | |
| --- a/grub-core/commands/blscfg.c
 | |
| +++ b/grub-core/commands/blscfg.c
 | |
| @@ -600,6 +600,12 @@ static char **bls_make_list (struct bls_entry *entry, const char *key, int *num)
 | |
|        list[nlist] = NULL;
 | |
|    }
 | |
|  
 | |
| +  if (!nlist)
 | |
| +    {
 | |
| +      grub_free (list);
 | |
| +      return NULL;
 | |
| +    }
 | |
| +
 | |
|    if (num)
 | |
|      *num = nlist;
 | |
|  
 |