diff options
Diffstat (limited to 'src/nm-initrd-generator')
| -rw-r--r-- | src/nm-initrd-generator/nmi-cmdline-reader.c | 8 | ||||
| -rw-r--r-- | src/nm-initrd-generator/tests/test-cmdline-reader.c | 35 |
2 files changed, 39 insertions, 4 deletions
diff --git a/src/nm-initrd-generator/nmi-cmdline-reader.c b/src/nm-initrd-generator/nmi-cmdline-reader.c index 5c42f83c..a8501336 100644 --- a/src/nm-initrd-generator/nmi-cmdline-reader.c +++ b/src/nm-initrd-generator/nmi-cmdline-reader.c @@ -1221,7 +1221,9 @@ nmi_cmdline_reader_parse(const char * sysfs_dir, tag = get_word(&argument, '='); - if (nm_streq(tag, "net.ifnames")) + if (!tag) { + /* pass */ + } else if (nm_streq(tag, "net.ifnames")) net_ifnames = !nm_streq(argument, "0"); else if (nm_streq(tag, "rd.peerdns")) reader->ignore_auto_dns = !_nm_utils_ascii_str_to_bool(argument, TRUE); @@ -1255,7 +1257,9 @@ nmi_cmdline_reader_parse(const char * sysfs_dir, argument = argument_clone; tag = get_word(&argument, '='); - if (nm_streq(tag, "ip")) + if (!tag) { + /* pass */ + } else if (nm_streq(tag, "ip")) reader_parse_ip(reader, sysfs_dir, argument); else if (nm_streq(tag, "rd.route")) { if (!routes) diff --git a/src/nm-initrd-generator/tests/test-cmdline-reader.c b/src/nm-initrd-generator/tests/test-cmdline-reader.c index b0dcf06d..e2a37c58 100644 --- a/src/nm-initrd-generator/tests/test-cmdline-reader.c +++ b/src/nm-initrd-generator/tests/test-cmdline-reader.c @@ -74,6 +74,16 @@ NM_CONNECTION(g_object_ref(_1_connection)); \ }) +#define _parse_no_con(ARGV) \ + G_STMT_START \ + { \ + gs_unref_hashtable GHashTable *_0_connections = NULL; \ + \ + _0_connections = _parse_cons(ARGV); \ + g_assert_cmpint(g_hash_table_size(_0_connections), ==, 0); \ + } \ + G_STMT_END + /*****************************************************************************/ static void @@ -290,7 +300,7 @@ test_dhcp_timeout(void) static void test_if_auto_with_mtu(void) { - const char *const *ARGV = NM_MAKE_STRV("ip=eth0:auto:1666"); + const char *const *ARGV = NM_MAKE_STRV("ip=eth0:auto:1666", "="); gs_unref_object NMConnection *connection = NULL; NMSettingConnection * s_con; NMSettingWired * s_wired; @@ -461,7 +471,7 @@ test_if_ip4_manual(void) static void test_if_ip4_manual_no_dev(void) { - const char *const * ARGV = NM_MAKE_STRV("ip=192.0.2.2::192.0.2.1:24:::"); + const char *const * ARGV = NM_MAKE_STRV("ip=192.0.2.2::192.0.2.1:24:::", "=foo"); NMConnection * connection; NMSettingConnection *s_con; NMSettingIPConfig * s_ip4; @@ -2461,6 +2471,26 @@ test_rd_ethtool(void) g_hash_table_unref(connections); } +/*****************************************************************************/ + +static void +test_plain_equal_char(void) +{ + _parse_no_con(NM_MAKE_STRV("=")); + _parse_no_con(NM_MAKE_STRV("=foo")); + _parse_no_con(NM_MAKE_STRV("BOOT_IMAGE=(hd0,msdos2)/boot/vmlinuz-5.13.10-100.fc33.x86_64", + "root=UUID=ff252b4a-8294-4961-abcb-74c8fc868db7", + "ro", + "rhgb", + "quiet", + "pci", + "=", + "nomsi,", + "noaer")); +} + +/*****************************************************************************/ + NMTST_DEFINE(); int @@ -2516,6 +2546,7 @@ main(int argc, char **argv) g_test_add_func("/initrd/cmdline/infiniband/pkey", test_infiniband_pkey); g_test_add_func("/initrd/cmdline/carrier_timeout", test_carrier_timeout); g_test_add_func("/initrd/cmdline/rd_ethtool", test_rd_ethtool); + g_test_add_func("/initrd/cmdline/plain_equal_char", test_plain_equal_char); return g_test_run(); } |