Skip to content

Commit 67110ae

Browse files
CA-407115: Adding logic to handle boot entries with no additional arguments
Function readGrub2 parses the arguments for each entries in grub.cfg, Missing arguments would result in an error in the original code. So added logic to handle the case of an entry with no arguments (e.g. memtest86+x64.efi). Signed-off-by: Stephen Cheng <stephen.cheng@cloud.com>
1 parent df61175 commit 67110ae

1 file changed

Lines changed: 11 additions & 10 deletions

File tree

xcp/bootloader.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,12 @@ def create_label(title):
345345
COUNTER += 1
346346
return "label%d" % COUNTER
347347

348+
def parse_boot_entry(line):
349+
parts = line.split(None, 2) # Split into at most 3 parts
350+
entry = parts[1] if len(parts) > 1 else ""
351+
args = parts[2] if len(parts) > 2 else ""
352+
return entry, args
353+
348354
fh = open_textfile(src_file, "r")
349355
try:
350356
for line in fh:
@@ -395,23 +401,18 @@ def create_label(title):
395401
elif title:
396402
if l.startswith("multiboot2"):
397403
if "tboot" in l:
398-
tboot, tboot_args = (l.split(None, 1)
399-
[1].split(None, 1))
404+
tboot, tboot_args = parse_boot_entry(l)
400405
else:
401-
hypervisor, hypervisor_args = (l.split(None, 1)
402-
[1].split(None, 1))
406+
hypervisor, hypervisor_args = parse_boot_entry(l)
403407
elif l.startswith("module2"):
404408
if not hypervisor:
405-
hypervisor, hypervisor_args = (l.split(None, 1)
406-
[1].split(None, 1))
409+
hypervisor, hypervisor_args = parse_boot_entry(l)
407410
elif kernel:
408411
initrd = l.split(None, 1)[1]
409412
else:
410-
kernel, kernel_args = (l.split(None, 1)
411-
[1].split(None, 1))
413+
kernel, kernel_args = parse_boot_entry(l)
412414
elif l.startswith("linux"):
413-
kernel, kernel_args = (l.split(None, 1)
414-
[1].split(None, 1))
415+
kernel, kernel_args = parse_boot_entry(l)
415416
elif l.startswith("initrd"):
416417
initrd = l.split(None, 1)[1]
417418
elif l.startswith("search --label --set root"):

0 commit comments

Comments
 (0)