All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1 0/2] Fix cfg file parsing and command line parsing
@ 2025-05-18  7:51 Shreenidhi Shedi
  2025-05-18  7:51 ` [PATCH v1 1/2] envblk: ignore empty new lines while parsing env files Shreenidhi Shedi
  2025-05-18  7:51 ` [PATCH v1 2/2] cmdline: fix command line parsing in grub Shreenidhi Shedi
  0 siblings, 2 replies; 7+ messages in thread
From: Shreenidhi Shedi @ 2025-05-18  7:51 UTC (permalink / raw)
  To: grub-devel; +Cc: yesshedi, alexey.makhalov, daniel.kiper

Hi GRUB Developers,

This patch series contains two fixes to improve how GRUB handles
environment files and constructs the kernel command line, these issues
were reported by PhotonOS customers.

The first patch ensures that empty lines in environment files are
skipped during parsing.

The second patch removes unnecessary escaping of quotes in the
constructed command line, as the Linux kernel does not support escaped
quotes.

Thanks for your time and consideration.

v0 changes:
- Initial revision.
- https://lists.gnu.org/archive/html/grub-devel/2025-05/msg00085.html

v1 changes:
- Added cover leter
- Improved commit message as suggested by Daniel Kiper

--
Shreenidhi Shedi

--
2.49.0

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v1 1/2] envblk: ignore empty new lines while parsing env files
  2025-05-18  7:51 [PATCH v1 0/2] Fix cfg file parsing and command line parsing Shreenidhi Shedi
@ 2025-05-18  7:51 ` Shreenidhi Shedi
  2025-05-19 17:13   ` Daniel Kiper
  2025-05-19 18:17   ` Vladimir 'phcoder' Serbinenko
  2025-05-18  7:51 ` [PATCH v1 2/2] cmdline: fix command line parsing in grub Shreenidhi Shedi
  1 sibling, 2 replies; 7+ messages in thread
From: Shreenidhi Shedi @ 2025-05-18  7:51 UTC (permalink / raw)
  To: grub-devel; +Cc: yesshedi, alexey.makhalov, daniel.kiper, Shreenidhi Shedi

From: Shreenidhi Shedi <shreenidhi.shedi@broadcom.com>

Environment files may contain empty lines, which should be
ignored during parsing. Currently, these lines are not skipped and
resulting in incorrect behavior. This patch adds a check to skip empty
lines along with those starting with `#'.

Signed-off-by: Shreenidhi Shedi <shreenidhi.shedi@broadcom.com>
Reviewed-by: Alexey Makhalov  <alexey.makhalov@broadcom.com>
---
 grub-core/lib/envblk.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/grub-core/lib/envblk.c b/grub-core/lib/envblk.c
index 2e4e78b13..f08dabaad 100644
--- a/grub-core/lib/envblk.c
+++ b/grub-core/lib/envblk.c
@@ -235,7 +235,7 @@ grub_envblk_iterate (grub_envblk_t envblk,

   while (p < pend)
     {
-      if (*p != '#')
+      if (*p != '#' && *p != '\n')
         {
           char *name;
           char *value;
--
2.49.0


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v1 2/2] cmdline: fix command line parsing in grub
  2025-05-18  7:51 [PATCH v1 0/2] Fix cfg file parsing and command line parsing Shreenidhi Shedi
  2025-05-18  7:51 ` [PATCH v1 1/2] envblk: ignore empty new lines while parsing env files Shreenidhi Shedi
@ 2025-05-18  7:51 ` Shreenidhi Shedi
  1 sibling, 0 replies; 7+ messages in thread
From: Shreenidhi Shedi @ 2025-05-18  7:51 UTC (permalink / raw)
  To: grub-devel; +Cc: yesshedi, alexey.makhalov, daniel.kiper, Shreenidhi Shedi

From: Shreenidhi Shedi <shreenidhi.shedi@broadcom.com>

Previously, the command line construction function
(grub_create_loader_cmdline) escaped single and double quotes, which is
unnecessary and potentially problematic since the kernel command line
handler does not support escaped quotes. This patch removes the escaping
of these characters, ensuring that the constructed command line is
passed to the kernel as intended.

For example:

In /boot/grub/grub.cfg
...
set user_cmdline="dyndbg='+p; func smp_callin -p'"
...
menuentry "Photon" {
  linux /boot/$photon_linux root=$rootpartition $photon_cmdline $systemd_cmdline $user_cmdline
  if [ -f /boot/$photon_initrd ]; then
    initrd /boot/$photon_initrd
  fi
}
...

Post reboot,

$ cat /proc/cmdline
... dyndbg=\'+p; func smp_callin -p\'

Signed-off-by: Shreenidhi Shedi <shreenidhi.shedi@broadcom.com>
Reviewed-by: Alexey Makhalov  <alexey.makhalov@broadcom.com>
---
 grub-core/lib/cmdline.c | 17 +++--------------
 1 file changed, 3 insertions(+), 14 deletions(-)

diff --git a/grub-core/lib/cmdline.c b/grub-core/lib/cmdline.c
index ed0b149dc..57c96a151 100644
--- a/grub-core/lib/cmdline.c
+++ b/grub-core/lib/cmdline.c
@@ -22,7 +22,6 @@

 static unsigned int check_arg (char *c, int *has_space)
 {
-  int space = 0;
   unsigned int size = 0;

   while (*c)
@@ -51,15 +50,9 @@ unsigned int grub_loader_cmdline_size (int argc, char *argv[])
   unsigned int size = 0;

   for (i = 0; i < argc; i++)
-    {
       size += check_arg (argv[i], 0);
-      size++; /* Separator space or NULL.  */
-    }
-
-  if (size == 0)
-    size = 1;

-  return size;
+  return size ? size : 1;
 }

 grub_err_t
@@ -73,8 +66,8 @@ grub_create_loader_cmdline (int argc, char *argv[], char *buf,
   for (i = 0; i < argc; i++)
     {
       c = argv[i];
+      space = 0;
       arg_size = check_arg(argv[i], &space);
-      arg_size++; /* Separator space or NULL.  */

       if (size < arg_size)
 	break;
@@ -86,11 +79,7 @@ grub_create_loader_cmdline (int argc, char *argv[], char *buf,

       while (*c)
 	{
-	  if (*c == '\\' || *c == '\'' || *c == '"')
-	    *buf++ = '\\';
-
-	  *buf++ = *c;
-	  c++;
+	  *buf++ = *c++;
 	}

       if (space)
--
2.49.0


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v1 1/2] envblk: ignore empty new lines while parsing env files
  2025-05-18  7:51 ` [PATCH v1 1/2] envblk: ignore empty new lines while parsing env files Shreenidhi Shedi
@ 2025-05-19 17:13   ` Daniel Kiper
  2025-05-19 17:25     ` Alexey Makhalov via Grub-devel
  2025-05-19 18:20     ` Shreenidhi Shedi
  2025-05-19 18:17   ` Vladimir 'phcoder' Serbinenko
  1 sibling, 2 replies; 7+ messages in thread
From: Daniel Kiper @ 2025-05-19 17:13 UTC (permalink / raw)
  To: Shreenidhi Shedi
  Cc: grub-devel, alexey.makhalov, daniel.kiper, Shreenidhi Shedi

On Sun, May 18, 2025 at 01:21:20PM +0530, Shreenidhi Shedi wrote:
> From: Shreenidhi Shedi <shreenidhi.shedi@broadcom.com>
>
> Environment files may contain empty lines, which should be
> ignored during parsing. Currently, these lines are not skipped and
> resulting in incorrect behavior. This patch adds a check to skip empty
> lines along with those starting with `#'.
>
> Signed-off-by: Shreenidhi Shedi <shreenidhi.shedi@broadcom.com>
> Reviewed-by: Alexey Makhalov  <alexey.makhalov@broadcom.com>

Please do not add RBs if reviews have not been done in public.
Those given on the grub-devel counts only.

> ---
>  grub-core/lib/envblk.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/grub-core/lib/envblk.c b/grub-core/lib/envblk.c
> index 2e4e78b13..f08dabaad 100644
> --- a/grub-core/lib/envblk.c
> +++ b/grub-core/lib/envblk.c
> @@ -235,7 +235,7 @@ grub_envblk_iterate (grub_envblk_t envblk,
>
>    while (p < pend)
>      {
> -      if (*p != '#')
> +      if (*p != '#' && *p != '\n')

Why do not add '\r' too?

Daniel

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v1 1/2] envblk: ignore empty new lines while parsing env files
  2025-05-19 17:13   ` Daniel Kiper
@ 2025-05-19 17:25     ` Alexey Makhalov via Grub-devel
  2025-05-19 18:20     ` Shreenidhi Shedi
  1 sibling, 0 replies; 7+ messages in thread
From: Alexey Makhalov via Grub-devel @ 2025-05-19 17:25 UTC (permalink / raw)
  To: Daniel Kiper, Shreenidhi Shedi
  Cc: Alexey Makhalov, grub-devel, daniel.kiper, Shreenidhi Shedi



On 5/19/25 10:13 AM, Daniel Kiper wrote:
> On Sun, May 18, 2025 at 01:21:20PM +0530, Shreenidhi Shedi wrote:
>> From: Shreenidhi Shedi <shreenidhi.shedi@broadcom.com>
>>
>> Environment files may contain empty lines, which should be
>> ignored during parsing. Currently, these lines are not skipped and
>> resulting in incorrect behavior. This patch adds a check to skip empty
>> lines along with those starting with `#'.
>>
>> Signed-off-by: Shreenidhi Shedi <shreenidhi.shedi@broadcom.com>
>> Reviewed-by: Alexey Makhalov  <alexey.makhalov@broadcom.com>
> 
> Please do not add RBs if reviews have not been done in public.
> Those given on the grub-devel counts only.
> 

Hi Daniel, it was my ask to Shreenidhi to add BR after our internal review.
Noted that part for the future.

Thanks,
--Alexey

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v1 1/2] envblk: ignore empty new lines while parsing env files
  2025-05-18  7:51 ` [PATCH v1 1/2] envblk: ignore empty new lines while parsing env files Shreenidhi Shedi
  2025-05-19 17:13   ` Daniel Kiper
@ 2025-05-19 18:17   ` Vladimir 'phcoder' Serbinenko
  1 sibling, 0 replies; 7+ messages in thread
From: Vladimir 'phcoder' Serbinenko @ 2025-05-19 18:17 UTC (permalink / raw)
  To: The development of GNU GRUB


[-- Attachment #1.1: Type: text/plain, Size: 1292 bytes --]

Are those empty lines result of manual editing of envblk? You should not do
this

Regards

Le dim. 18 mai 2025, 11:01, Shreenidhi Shedi <yesshedi@gmail.com> a écrit :

> From: Shreenidhi Shedi <shreenidhi.shedi@broadcom.com>
>
> Environment files may contain empty lines, which should be
> ignored during parsing. Currently, these lines are not skipped and
> resulting in incorrect behavior. This patch adds a check to skip empty
> lines along with those starting with `#'.
>
> Signed-off-by: Shreenidhi Shedi <shreenidhi.shedi@broadcom.com>
> Reviewed-by: Alexey Makhalov  <alexey.makhalov@broadcom.com>
> ---
>  grub-core/lib/envblk.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/grub-core/lib/envblk.c b/grub-core/lib/envblk.c
> index 2e4e78b13..f08dabaad 100644
> --- a/grub-core/lib/envblk.c
> +++ b/grub-core/lib/envblk.c
> @@ -235,7 +235,7 @@ grub_envblk_iterate (grub_envblk_t envblk,
>
>    while (p < pend)
>      {
> -      if (*p != '#')
> +      if (*p != '#' && *p != '\n')
>          {
>            char *name;
>            char *value;
> --
> 2.49.0
>
>
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel
>

[-- Attachment #1.2: Type: text/html, Size: 2315 bytes --]

[-- Attachment #2: Type: text/plain, Size: 141 bytes --]

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v1 1/2] envblk: ignore empty new lines while parsing env files
  2025-05-19 17:13   ` Daniel Kiper
  2025-05-19 17:25     ` Alexey Makhalov via Grub-devel
@ 2025-05-19 18:20     ` Shreenidhi Shedi
  1 sibling, 0 replies; 7+ messages in thread
From: Shreenidhi Shedi @ 2025-05-19 18:20 UTC (permalink / raw)
  To: Daniel Kiper; +Cc: grub-devel, alexey.makhalov, daniel.kiper, Shreenidhi Shedi

On 19/05/25 22:43, Daniel Kiper wrote:
> On Sun, May 18, 2025 at 01:21:20PM +0530, Shreenidhi Shedi wrote:
>> From: Shreenidhi Shedi <shreenidhi.shedi@broadcom.com>
>>
>> Environment files may contain empty lines, which should be
>> ignored during parsing. Currently, these lines are not skipped and
>> resulting in incorrect behavior. This patch adds a check to skip empty
>> lines along with those starting with `#'.
>>
>> Signed-off-by: Shreenidhi Shedi <shreenidhi.shedi@broadcom.com>
>> Reviewed-by: Alexey Makhalov  <alexey.makhalov@broadcom.com>
> 
> Please do not add RBs if reviews have not been done in public.
> Those given on the grub-devel counts only.
> 
>> ---
>>   grub-core/lib/envblk.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/grub-core/lib/envblk.c b/grub-core/lib/envblk.c
>> index 2e4e78b13..f08dabaad 100644
>> --- a/grub-core/lib/envblk.c
>> +++ b/grub-core/lib/envblk.c
>> @@ -235,7 +235,7 @@ grub_envblk_iterate (grub_envblk_t envblk,
>>
>>     while (p < pend)
>>       {
>> -      if (*p != '#')
>> +      if (*p != '#' && *p != '\n')
> 
> Why do not add '\r' too?
> 
> Daniel

On suggestion regarding RBs, will keep it in mind going forward.

I will add check to ignore '\r' and send v2 shortly.

Thanks for the review.

-- 
Shedi

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2025-05-19 19:35 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-18  7:51 [PATCH v1 0/2] Fix cfg file parsing and command line parsing Shreenidhi Shedi
2025-05-18  7:51 ` [PATCH v1 1/2] envblk: ignore empty new lines while parsing env files Shreenidhi Shedi
2025-05-19 17:13   ` Daniel Kiper
2025-05-19 17:25     ` Alexey Makhalov via Grub-devel
2025-05-19 18:20     ` Shreenidhi Shedi
2025-05-19 18:17   ` Vladimir 'phcoder' Serbinenko
2025-05-18  7:51 ` [PATCH v1 2/2] cmdline: fix command line parsing in grub Shreenidhi Shedi

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.