mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-10-14 20:18:39 +00:00
initrd: fix crash parsing plain '=' without key
./src/nm-initrd-generator/nm-initrd-generator -s -- =
Fixes: ecc074b2f8
('initrd: add command line parser')
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/776
This commit is contained in:
parent
553721eed7
commit
01fd4b7d2c
|
@ -1335,7 +1335,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);
|
||||
|
@ -1369,7 +1371,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)
|
||||
|
|
|
@ -300,7 +300,7 @@ test_dhcp_timeout(void)
|
|||
static void
|
||||
test_if_auto_with_mtu(void)
|
||||
{
|
||||
const char *const *ARGV = NM_MAKE_STRV("ip=eth0:dhcp,dhcp6:1666");
|
||||
const char *const *ARGV = NM_MAKE_STRV("ip=eth0:dhcp,dhcp6:1666", "=");
|
||||
gs_unref_object NMConnection *connection = NULL;
|
||||
NMSettingConnection * s_con;
|
||||
NMSettingWired * s_wired;
|
||||
|
@ -471,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;
|
||||
|
@ -2471,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
|
||||
|
@ -2526,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();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue