All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] pygrub: fix non-interactive parsing of grub1 config files
@ 2014-09-08 14:01 David Scott
  2014-09-08 17:11 ` Boris Ostrovsky
  0 siblings, 1 reply; 10+ messages in thread
From: David Scott @ 2014-09-08 14:01 UTC (permalink / raw)
  To: xen-devel
  Cc: David Scott, David Scott, stefano.stabellini, ian.jackson,
	boris.ostrovsky, ian.campbell

From: David Scott <dave.scott@eu.citrix.com>

Since c/s d1b93ea2, the type of 'sel' now depends on whether pygrub
is run interactively or not. In non-interactive / quiet mode it is
a string; in interactive mode it is an integer.

When 'sel' is used to index an array it must be used as an integer.

Signed-off-by: David Scott <dave.scott@citrix.com>
---
 tools/pygrub/src/pygrub |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/pygrub/src/pygrub b/tools/pygrub/src/pygrub
index 2618e11..f167a51 100644
--- a/tools/pygrub/src/pygrub
+++ b/tools/pygrub/src/pygrub
@@ -630,7 +630,7 @@ def run_grub(file, entry, fs, cfg_args):
         sys.exit(1)
 
     try:
-        img = g.cf.images[sel]
+        img = g.cf.images[int(sel)]
     except IndexError:
         img = g.cf.images[0]
 
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread
* [PATCH] pygrub: fix non-interactive parsing of grub1 config files
@ 2014-10-27 16:00 Simon Rowe
  2014-10-27 16:35 ` Boris Ostrovsky
  2014-10-28 12:38 ` Andrew Cooper
  0 siblings, 2 replies; 10+ messages in thread
From: Simon Rowe @ 2014-10-27 16:00 UTC (permalink / raw)
  To: xen-devel
  Cc: Dave.Scott, Ian.Campbell, Simon Rowe, Stefano.Stabellini,
	Ian.Jackson, boris.ostrovsky

Changes to handle non-numeric default attributes for grub2 caused run_grub()
to attempt to index into the images list using a string. Pull out the code
that handles submenus into a new function and use that to ensure sel is
numeric.

Reported-by: David Scott <dave.scott@citrix.com>
Signed-off-by: Simon Rowe <simon.rowe@eu.citrix.com>
---
 tools/pygrub/src/pygrub |   23 ++++++++++++++---------
 1 file changed, 14 insertions(+), 9 deletions(-)

diff --git a/tools/pygrub/src/pygrub b/tools/pygrub/src/pygrub
index 1ae34a2..4cc846f 100644
--- a/tools/pygrub/src/pygrub
+++ b/tools/pygrub/src/pygrub
@@ -456,11 +456,9 @@ class Grub:
         del f
         self.cf.parse(buf)
 
-    def run(self):
-        timeout = int(self.cf.timeout)
-
+    def image_index(self):
         if self.cf.default.isdigit():
-            self.selected_image = int(self.cf.default)
+            sel = int(self.cf.default)
         else:
             # We don't fully support submenus. Look for the leaf value in
             # "submenu0>submenu1>...>menuentry" and hope that it's unique.
@@ -472,16 +470,23 @@ class Grub:
                     break
 
             # Map string to index in images array
-            self.selected_image = 0
+            sel = 0
             for i in range(len(self.cf.images)):
                 if self.cf.images[i].title == title:
-                    self.selected_image = i
+                    sel = i
                     break
 
         # If the selected (default) image doesn't exist we select the first entry
-        if self.selected_image > len(self.cf.images):
+        if sel > len(self.cf.images):
             logging.warning("Default image not found")
-            self.selected_image = 0
+            sel = 0
+
+        return sel
+
+    def run(self):
+        timeout = int(self.cf.timeout)
+        self.selected_image = self.image_index()
+
         self.isdone = False
         while not self.isdone:
             self.run_main(timeout)
@@ -626,7 +631,7 @@ def run_grub(file, entry, fs, cfg_args):
     if interactive and not list_entries:
         curses.wrapper(run_main)
     else:
-        sel = g.cf.default
+        sel = g.image_index()
 
     # set the entry to boot as requested
     if entry is not None:
-- 
1.7.10.4

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

end of thread, other threads:[~2014-11-04 15:26 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-09-08 14:01 [PATCH] pygrub: fix non-interactive parsing of grub1 config files David Scott
2014-09-08 17:11 ` Boris Ostrovsky
2014-09-10 12:50   ` Dave Scott
2014-10-24 21:15     ` Konrad Rzeszutek Wilk
2014-10-27 12:51       ` Simon Rowe
2014-10-27 16:00 Simon Rowe
2014-10-27 16:35 ` Boris Ostrovsky
2014-11-04 10:46   ` Ian Campbell
2014-11-04 15:26     ` Konrad Rzeszutek Wilk
2014-10-28 12:38 ` Andrew Cooper

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.