44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From d3c64808b6fc4794e2c58b1812315914966afea9 Mon Sep 17 00:00:00 2001
 | 
						|
From: Robert Marshall <rmarshall@redhat.com>
 | 
						|
Date: Thu, 22 Dec 2016 17:56:44 -0500
 | 
						|
Subject: [PATCH 38/55] Write correct default to environment (#1285601)
 | 
						|
 | 
						|
grubby writes the title of the default boot entry to the bootloader
 | 
						|
environment. The title lookup did not correctly account for the offset
 | 
						|
required if some boot entries were marked for removal.
 | 
						|
 | 
						|
Related: rhbz#1285601
 | 
						|
---
 | 
						|
 grubby.c | 15 ++++++++++++++-
 | 
						|
 1 file changed, 14 insertions(+), 1 deletion(-)
 | 
						|
 | 
						|
diff --git a/grubby.c b/grubby.c
 | 
						|
index 692c351ccb6..9edb26d0ded 100644
 | 
						|
--- a/grubby.c
 | 
						|
+++ b/grubby.c
 | 
						|
@@ -1709,7 +1709,20 @@ static void writeDefault(FILE * out, char *indent,
 | 
						|
 		fprintf(out, "%sset default=\"${saved_entry}\"\n", indent);
 | 
						|
 		if (cfg->defaultImage >= FIRST_ENTRY_INDEX && cfg->cfi->setEnv) {
 | 
						|
 			char *title;
 | 
						|
-			entry = findEntryByIndex(cfg, cfg->defaultImage);
 | 
						|
+			int trueIndex, currentIndex;
 | 
						|
+
 | 
						|
+			trueIndex = 0;
 | 
						|
+			currentIndex = 0;
 | 
						|
+
 | 
						|
+			while ((entry = findEntryByIndex(cfg, currentIndex))) {
 | 
						|
+				if (!entry->skip) {
 | 
						|
+					if (trueIndex == cfg->defaultImage) {
 | 
						|
+						break;
 | 
						|
+					}
 | 
						|
+					trueIndex++;
 | 
						|
+				}
 | 
						|
+				currentIndex++;
 | 
						|
+			}
 | 
						|
 			line = getLineByType(LT_MENUENTRY, entry->lines);
 | 
						|
 			if (!line)
 | 
						|
 				line = getLineByType(LT_TITLE, entry->lines);
 | 
						|
-- 
 | 
						|
2.17.1
 | 
						|
 |