2019-04-17 20:13:56

by Masayoshi Mizuma

[permalink] [raw]
Subject: [PATCH] ktest: Add support for meta characters in GRUB_MENU

From: Masayoshi Mizuma <[email protected]>

ktest fails if meta characters are in GRUB_MENU, for example
GRUB_MENU = 'Fedora (test)'

The failure happens because the meta characters are not escaped,
so the menu doesn't match in any entries in GRUB_FILE.

Use quotameta() to escape the meta characters.

Signed-off-by: Masayoshi Mizuma <[email protected]>
---
tools/testing/ktest/ktest.pl | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/tools/testing/ktest/ktest.pl b/tools/testing/ktest/ktest.pl
index 87af8a68ab25..ea07d43856b8 100755
--- a/tools/testing/ktest/ktest.pl
+++ b/tools/testing/ktest/ktest.pl
@@ -1866,9 +1866,10 @@ sub get_grub2_index {
or dodie "unable to get $grub_file";

my $found = 0;
+ my $_grub_menu = quotemeta($grub_menu);

while (<IN>) {
- if (/^menuentry.*$grub_menu/) {
+ if (/^menuentry.*$_grub_menu/) {
$grub_number++;
$found = 1;
last;
@@ -1909,9 +1910,10 @@ sub get_grub_index {
or dodie "unable to get menu.lst";

my $found = 0;
+ my $_grub_menu = quotemeta($grub_menu);

while (<IN>) {
- if (/^\s*title\s+$grub_menu\s*$/) {
+ if (/^\s*title\s+$_grub_menu\s*$/) {
$grub_number++;
$found = 1;
last;
--
2.20.1


2019-04-17 20:18:45

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] ktest: Add support for meta characters in GRUB_MENU

On Wed, 17 Apr 2019 16:11:14 -0400
Masayoshi Mizuma <[email protected]> wrote:

> From: Masayoshi Mizuma <[email protected]>
>
> ktest fails if meta characters are in GRUB_MENU, for example
> GRUB_MENU = 'Fedora (test)'
>

Thanks for the patch! One little nit below though.

> The failure happens because the meta characters are not escaped,
> so the menu doesn't match in any entries in GRUB_FILE.
>
> Use quotameta() to escape the meta characters.
>
> Signed-off-by: Masayoshi Mizuma <[email protected]>
> ---
> tools/testing/ktest/ktest.pl | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/ktest/ktest.pl b/tools/testing/ktest/ktest.pl
> index 87af8a68ab25..ea07d43856b8 100755
> --- a/tools/testing/ktest/ktest.pl
> +++ b/tools/testing/ktest/ktest.pl
> @@ -1866,9 +1866,10 @@ sub get_grub2_index {
> or dodie "unable to get $grub_file";
>
> my $found = 0;
> + my $_grub_menu = quotemeta($grub_menu);

I'd like to avoid names that start with underscore. Could you call this:

$grub_menu_qt

or something similar, to be a bit more descriptive of what the variable
is.

Thanks!

-- Steve



>
> while (<IN>) {
> - if (/^menuentry.*$grub_menu/) {
> + if (/^menuentry.*$_grub_menu/) {
> $grub_number++;
> $found = 1;
> last;
> @@ -1909,9 +1910,10 @@ sub get_grub_index {
> or dodie "unable to get menu.lst";
>
> my $found = 0;
> + my $_grub_menu = quotemeta($grub_menu);
>
> while (<IN>) {
> - if (/^\s*title\s+$grub_menu\s*$/) {
> + if (/^\s*title\s+$_grub_menu\s*$/) {
> $grub_number++;
> $found = 1;
> last;

2019-04-17 20:38:08

by Masayoshi Mizuma

[permalink] [raw]
Subject: Re: [PATCH] ktest: Add support for meta characters in GRUB_MENU

On Wed, Apr 17, 2019 at 04:17:39PM -0400, Steven Rostedt wrote:
> On Wed, 17 Apr 2019 16:11:14 -0400
> Masayoshi Mizuma <[email protected]> wrote:
>
> > From: Masayoshi Mizuma <[email protected]>
> >
> > ktest fails if meta characters are in GRUB_MENU, for example
> > GRUB_MENU = 'Fedora (test)'
> >
>
> Thanks for the patch! One little nit below though.
>
> > The failure happens because the meta characters are not escaped,
> > so the menu doesn't match in any entries in GRUB_FILE.
> >
> > Use quotameta() to escape the meta characters.
> >
> > Signed-off-by: Masayoshi Mizuma <[email protected]>
> > ---
> > tools/testing/ktest/ktest.pl | 6 ++++--
> > 1 file changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/tools/testing/ktest/ktest.pl b/tools/testing/ktest/ktest.pl
> > index 87af8a68ab25..ea07d43856b8 100755
> > --- a/tools/testing/ktest/ktest.pl
> > +++ b/tools/testing/ktest/ktest.pl
> > @@ -1866,9 +1866,10 @@ sub get_grub2_index {
> > or dodie "unable to get $grub_file";
> >
> > my $found = 0;
> > + my $_grub_menu = quotemeta($grub_menu);
>
> I'd like to avoid names that start with underscore. Could you call this:
>
> $grub_menu_qt
>
> or something similar, to be a bit more descriptive of what the variable
> is.

Thank you for your review! I'll fix it and post the v2.

Thanks!
Masa

2019-04-17 20:54:07

by Randy Dunlap

[permalink] [raw]
Subject: Re: [PATCH] ktest: Add support for meta characters in GRUB_MENU

On 4/17/19 1:11 PM, Masayoshi Mizuma wrote:
> From: Masayoshi Mizuma <[email protected]>
>
> ktest fails if meta characters are in GRUB_MENU, for example
> GRUB_MENU = 'Fedora (test)'
>
> The failure happens because the meta characters are not escaped,
> so the menu doesn't match in any entries in GRUB_FILE.
>
> Use quotameta() to escape the meta characters.

Use quotemeta()

>
> Signed-off-by: Masayoshi Mizuma <[email protected]>
> ---
> tools/testing/ktest/ktest.pl | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/ktest/ktest.pl b/tools/testing/ktest/ktest.pl
> index 87af8a68ab25..ea07d43856b8 100755
> --- a/tools/testing/ktest/ktest.pl
> +++ b/tools/testing/ktest/ktest.pl
> @@ -1866,9 +1866,10 @@ sub get_grub2_index {
> or dodie "unable to get $grub_file";
>
> my $found = 0;
> + my $_grub_menu = quotemeta($grub_menu);
>
> while (<IN>) {
> - if (/^menuentry.*$grub_menu/) {
> + if (/^menuentry.*$_grub_menu/) {
> $grub_number++;
> $found = 1;
> last;
> @@ -1909,9 +1910,10 @@ sub get_grub_index {
> or dodie "unable to get menu.lst";
>
> my $found = 0;
> + my $_grub_menu = quotemeta($grub_menu);
>
> while (<IN>) {
> - if (/^\s*title\s+$grub_menu\s*$/) {
> + if (/^\s*title\s+$_grub_menu\s*$/) {
> $grub_number++;
> $found = 1;
> last;
>


--
~Randy