summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2013-09-06 11:46:56 +0800
committerJeremy Kerr <jk@ozlabs.org>2013-09-06 13:23:35 +0800
commit15c8cadd1173f681142a3f48319a203d7b917850 (patch)
tree7e9e39bb89c14412063e48e784a9857546253d64
parentd28b706489cfd2c11e281ff3eaeb136ca154a1ee (diff)
downloadtalos-petitboot-15c8cadd1173f681142a3f48319a203d7b917850.tar.gz
talos-petitboot-15c8cadd1173f681142a3f48319a203d7b917850.zip
discover/pxe: check for a valid boot option before adding
If we didn't find any valid boot options in the pxe buffer, we'll call discover_context_add_boot_option with a NULL boot option. This change adds a check before we try to add the boot option, and a test to verify this situation. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
-rw-r--r--discover/pxe-parser.c3
-rw-r--r--test/parser/Makefile.am1
-rw-r--r--test/parser/test-pxe-empty.c19
3 files changed, 22 insertions, 1 deletions
diff --git a/discover/pxe-parser.c b/discover/pxe-parser.c
index 1f6eb0f..ca0f4b5 100644
--- a/discover/pxe-parser.c
+++ b/discover/pxe-parser.c
@@ -12,7 +12,8 @@
static void pxe_finish(struct conf_context *conf)
{
- discover_context_add_boot_option(conf->dc, conf->parser_info);
+ if (conf->parser_info)
+ discover_context_add_boot_option(conf->dc, conf->parser_info);
}
static void pxe_process_pair(struct conf_context *ctx,
diff --git a/test/parser/Makefile.am b/test/parser/Makefile.am
index 9029544..e221bf2 100644
--- a/test/parser/Makefile.am
+++ b/test/parser/Makefile.am
@@ -41,6 +41,7 @@ TESTS = \
test-yaboot-device-override \
test-yaboot-default \
test-yaboot-rh8-ppc64 \
+ test-pxe-empty \
test-pxe-single \
test-pxe-initrd-in-append
diff --git a/test/parser/test-pxe-empty.c b/test/parser/test-pxe-empty.c
new file mode 100644
index 0000000..eb3b758
--- /dev/null
+++ b/test/parser/test-pxe-empty.c
@@ -0,0 +1,19 @@
+
+#include "parser-test.h"
+
+#if 0 /* PARSER_EMBEDDED_CONFIG */
+
+#endif
+
+void run_test(struct parser_test *test)
+{
+ struct discover_context *ctx;
+
+ test_read_conf_embedded(test);
+ test_set_conf_source(test, "tftp://host/dir/conf.txt");
+ test_run_parser(test, "pxe");
+
+ ctx = test->ctx;
+
+ check_boot_option_count(ctx, 0);
+}
OpenPOWER on IntegriCloud