From b7c7bdbf7639ebfd16875cba63f2a63404193ec4 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Fri, 10 Sep 2010 15:43:28 -0400
Subject: [PATCH] main: Fix up check_for_consoles
commit c40fd792b6edf931a6bbe2ec23518b57483a4e2f was just wrong.
Attempt to fix it up to be less awful.
---
src/main.c | 26 ++++++++++++++------------
1 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/src/main.c b/src/main.c
index 27ec95c..b06dbdc 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1755,8 +1755,9 @@ check_for_consoles (state_t *state,
const char *default_tty,
bool should_add_displays)
{
- const char *console;
+ const char *console_string;
const char *remaining_command_line;
+ char *console;
ply_hashtable_t *consoles;
ply_trace ("checking for consoles%s",
@@ -1766,25 +1767,26 @@ check_for_consoles (state_t *state,
consoles = ply_hashtable_new (ply_hashtable_string_hash,
ply_hashtable_string_compare);
- while ((console = command_line_get_string_after_prefix (remaining_command_line,
- "console=")) != NULL)
+ while ((console_string = command_line_get_string_after_prefix (remaining_command_line,
+ "console=")) != NULL)
{
char *end;
- state->should_force_details = true;
+ remaining_command_line = console_string;
- ply_trace ("serial console %s found!", console);
- ply_hashtable_insert (consoles, strdup (console), NULL);
+ state->should_force_details = true;
- remaining_command_line = console;
+ console = strdup (console_string);
- end = strpbrk (state->kernel_console_tty, " \n\t\v,");
+ end = strpbrk (console, " \n\t\v,");
if (end != NULL)
- {
- *end = '\0';
- console += end - state->kernel_console_tty;
- }
+ *end = '\0';
+
+ ply_trace ("serial console %s found!", console);
+ ply_hashtable_insert (consoles, console, NULL);
+
+ remaining_command_line += strlen (console);
}
free (state->kernel_console_tty);
--
1.7.3.1
From 18541c1d58612f1535972c54940bbb460c5cab06 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Thu, 7 Oct 2010 12:47:47 -0400
Subject: [PATCH] main: NULL initialize "console" variable
check_for_consoles is a really small function, that has historically
been loaded with bugs.
This commit fixes another bug in it, where the consoles variable is
never initialized to NULL.
---
src/main.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/src/main.c b/src/main.c
index 2787aed..7358c24 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1765,6 +1765,7 @@ check_for_consoles (state_t *state,
remaining_command_line = state->kernel_command_line;
+ console = NULL;
consoles = ply_hashtable_new (ply_hashtable_string_hash,
ply_hashtable_string_compare);
while ((console_string = command_line_get_string_after_prefix (remaining_command_line,
--
1.7.3.1