From: Yu Watanabe Date: Tue, 12 Jan 2021 12:55:15 +0000 (+0900) Subject: network: refuse zero length dhcp user class X-Git-Tag: v248-rc1~361^2~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b79951fa328f60577082a5710852e1d020d60b65;p=thirdparty%2Fsystemd.git network: refuse zero length dhcp user class --- diff --git a/src/network/networkd-dhcp-common.c b/src/network/networkd-dhcp-common.c index 4dd98a2c61e..4826d15e808 100644 --- a/src/network/networkd-dhcp-common.c +++ b/src/network/networkd-dhcp-common.c @@ -533,6 +533,7 @@ int config_parse_dhcp_user_class( for (const char *p = rvalue;;) { _cleanup_free_ char *w = NULL; + size_t len; r = extract_first_word(&p, &w, NULL, EXTRACT_CUNESCAPE|EXTRACT_UNQUOTE); if (r == -ENOMEM) @@ -545,25 +546,24 @@ int config_parse_dhcp_user_class( if (r == 0) return 0; + len = strlen(w); if (ltype == AF_INET) { - if (strlen(w) > UINT8_MAX) { + if (len > UINT8_MAX || len == 0) { log_syntax(unit, LOG_WARNING, filename, line, 0, "%s length is not in the range 1-255, ignoring.", w); continue; } } else { - if (strlen(w) > UINT16_MAX) { + if (len > UINT16_MAX || len == 0) { log_syntax(unit, LOG_WARNING, filename, line, 0, "%s length is not in the range 1-65535, ignoring.", w); continue; } } - r = strv_push(l, w); + r = strv_consume(l, TAKE_PTR(w)); if (r < 0) return log_oom(); - - w = NULL; } }