summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2019-12-12 19:01:21 +0900
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2020-09-20 12:46:57 +0200
commit6d840ca77ef07f5ad8d7a84a7956edef188ef6ba (patch)
treeaed4b1bd91b2cc24c6d42afc9729a6990a6a43e8
parent165ae6edc64ad6fa2129bedcac2837d24773e31f (diff)
downloadsystemd-6d840ca77ef07f5ad8d7a84a7956edef188ef6ba.tar.gz
network-generator: allow empty hostname
Fixes #14319. (cherry picked from commit 21a925a4ac7955e7d7e6cfd477e96d3a2aaee7db) (cherry picked from commit efd5b1d443fee81a48939e3f86e7feb338f26211)
-rw-r--r--src/network/generator/network-generator.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/network/generator/network-generator.c b/src/network/generator/network-generator.c
index 0b5af33566..95fcd945c9 100644
--- a/src/network/generator/network-generator.c
+++ b/src/network/generator/network-generator.c
@@ -574,7 +574,7 @@ static int parse_netmask_or_prefixlen(int family, const char **value, unsigned c
static int parse_cmdline_ip_address(Context *context, int family, const char *value) {
union in_addr_union addr = {}, peer = {}, gateway = {};
- const char *hostname, *ifname, *dhcp_type, *dns, *p;
+ const char *hostname = NULL, *ifname, *dhcp_type, *dns, *p;
unsigned char prefixlen;
int r;
@@ -599,9 +599,11 @@ static int parse_cmdline_ip_address(Context *context, int family, const char *va
if (!p)
return -EINVAL;
- hostname = strndupa(value, p - value);
- if (!hostname_is_valid(hostname, false))
- return -EINVAL;
+ if (p != value) {
+ hostname = strndupa(value, p - value);
+ if (!hostname_is_valid(hostname, false))
+ return -EINVAL;
+ }
value = p + 1;