From b08e66a989b043ae717b0edf51e8f5227d2434bd31d915497f3cea8a9abb15e6 Mon Sep 17 00:00:00 2001 From: Michael Chang Date: Tue, 18 Apr 2023 04:58:25 +0000 Subject: [PATCH] Accepting request 1080038 from home:michael-chang:branches:Base:System - Fix the issue of freeing an uninitialized pointer * 0002-prep_loadenv-Fix-regex-for-Open-Firmware-device-spec.patch OBS-URL: https://build.opensuse.org/request/show/1080038 OBS-URL: https://build.opensuse.org/package/show/Base:System/grub2?expand=0&rev=450 --- ...-regex-for-Open-Firmware-device-spec.patch | 29 ++++++++++--------- grub2.changes | 2 ++ 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/0002-prep_loadenv-Fix-regex-for-Open-Firmware-device-spec.patch b/0002-prep_loadenv-Fix-regex-for-Open-Firmware-device-spec.patch index 387b3de..493d331 100644 --- a/0002-prep_loadenv-Fix-regex-for-Open-Firmware-device-spec.patch +++ b/0002-prep_loadenv-Fix-regex-for-Open-Firmware-device-spec.patch @@ -20,13 +20,14 @@ To fix this issue, we have updated the regular expression to properly handle the encoded comma in the Open Firmware device specifier, ensuring that the correct boot device is identified and used. +v2: +Fix the issue of freeing an uninitialized pointer in early_prep_loadenv. + Signed-off-by: Michael Chang --- grub-core/commands/prep_loadenv.c | 108 ++++++++++++++++++++++-------- 1 file changed, 79 insertions(+), 29 deletions(-) -diff --git a/grub-core/commands/prep_loadenv.c b/grub-core/commands/prep_loadenv.c -index de1b95689..c9797c50a 100644 --- a/grub-core/commands/prep_loadenv.c +++ b/grub-core/commands/prep_loadenv.c @@ -15,7 +15,7 @@ @@ -38,7 +39,7 @@ index de1b95689..c9797c50a 100644 { if (match->rm_so != -1) { -@@ -185,24 +185,18 @@ prep_partname (const char *devname, char **prep) +@@ -185,24 +185,18 @@ return err; } @@ -67,7 +68,7 @@ index de1b95689..c9797c50a 100644 if (ret) goto fail; -@@ -210,22 +204,11 @@ boot_disk_prep_partname (char **name) +@@ -210,22 +204,11 @@ if (! matches) goto fail; @@ -94,7 +95,7 @@ index de1b95689..c9797c50a 100644 } fail: -@@ -235,13 +218,58 @@ boot_disk_prep_partname (char **name) +@@ -235,13 +218,60 @@ if (!comperr) { regfree (®ex); @@ -117,6 +118,8 @@ index de1b95689..c9797c50a 100644 + grub_size_t nmatch; + char *devname = NULL; + ++ *name = NULL; ++ + if (varname) + cmdpath = grub_env_get (varname); + else @@ -155,7 +158,7 @@ index de1b95689..c9797c50a 100644 } static grub_err_t -@@ -274,13 +302,31 @@ grub_cmd_prep_loadenv (grub_command_t cmd __attribute__ ((unused)), +@@ -274,13 +304,31 @@ return GRUB_ERR_NONE; } @@ -181,24 +184,22 @@ index de1b95689..c9797c50a 100644 early_prep_loadenv (void) { grub_err_t err; - char *prep; +- char *prep; ++ char *prep = NULL; - err = boot_disk_prep_partname (&prep); + err = boot_disk_prep_partname (NULL, &prep); if (err == GRUB_ERR_NONE && prep) err = prep_read_envblk (prep); if (err == GRUB_ERR_BAD_FILE_TYPE || err == GRUB_ERR_FILE_NOT_FOUND) -@@ -295,6 +341,10 @@ static grub_command_t cmd_prep_load; - GRUB_MOD_INIT(prep_loadenv) +@@ -296,6 +344,10 @@ { early_env_hook = early_prep_loadenv; -+ cmd_prep_load = + cmd_prep_load = + grub_register_command("prep_partname", grub_cmd_prep_partname, + "VARNAME", + N_("Get partition name of PReP.")); - cmd_prep_load = ++ cmd_prep_load = grub_register_command("prep_load_env", grub_cmd_prep_loadenv, "DEVICE", --- -2.39.2 - + N_("Load variables from environment block file.")); diff --git a/grub2.changes b/grub2.changes index 23320f1..dad9d7e 100644 --- a/grub2.changes +++ b/grub2.changes @@ -4,6 +4,8 @@ Tue Apr 18 02:42:23 UTC 2023 - Michael Chang - Fix no prep partition error on non-PReP architectures by making the prep_loadenv module exclusive to powerpc_ieee1275 platform (bsc#1210489) * 0004-Introduce-prep_load_env-command.patch +- Fix the issue of freeing an uninitialized pointer + * 0002-prep_loadenv-Fix-regex-for-Open-Firmware-device-spec.patch - Rediff * 0005-export-environment-at-start-up.patch * 0009-Add-crypttab_entry-to-obviate-the-need-to-input-pass.patch