The installer was reading the kernel command line and was looking for certain values which configured the installer.
GRUB appended a trailing newline character which was not accounted for and caused that the last parameter was not correctly compared to the list of possible keys.
Fixes: #12656 - core 157: unattended installation don't work as expected on EFI Signed-off-by: Michael Tremer michael.tremer@ipfire.org --- src/installer/main.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/src/installer/main.c b/src/installer/main.c index 00d172888..fd20a1f37 100644 --- a/src/installer/main.c +++ b/src/installer/main.c @@ -290,18 +290,23 @@ static struct config { .language = DEFAULT_LANG, };
-static void parse_command_line(struct config* c) { +static void parse_command_line(FILE* flog, struct config* c) { char buffer[STRING_SIZE]; char cmdline[STRING_SIZE];
FILE* f = fopen("/proc/cmdline", "r"); - if (!f) + if (!f) { + fprintf(flog, "Could not open /proc/cmdline: %m"); return; + }
int r = fread(&cmdline, 1, sizeof(cmdline) - 1, f); if (r > 0) { - char* token = strtok(cmdline, " "); + // Remove the trailing newline + if (cmdline[r-1] == '\n') + cmdline[r-1] = '\0';
+ char* token = strtok(cmdline, " "); while (token) { strncpy(buffer, token, sizeof(buffer)); char* val = buffer; @@ -403,7 +408,7 @@ int main(int argc, char *argv[]) { snprintf(title, sizeof(title), "%s - %s", DISTRO_NAME, DISTRO_SLOGAN);
// Parse parameters from the kernel command line - parse_command_line(&config); + parse_command_line(flog, &config);
if (config.unattended) { splashWindow(title, _("Warning: Unattended installation will start in 10 seconds..."), 10);