diff --git a/neutron/agent/linux/dhcp.py b/neutron/agent/linux/dhcp.py index 8e247adb240..dd10d5e1e46 100644 --- a/neutron/agent/linux/dhcp.py +++ b/neutron/agent/linux/dhcp.py @@ -1307,6 +1307,7 @@ class Dnsmasq(DhcpLocalProcess): def _format_option(self, ip_version, tag, option, *args): """Format DHCP option by option name or code.""" option = str(option) + option = option.split("\n", 1)[0] pattern = "(tag:(.*),)?(.*)$" matches = re.match(pattern, option) extra_tag = matches.groups()[0] diff --git a/neutron/tests/unit/agent/linux/test_dhcp.py b/neutron/tests/unit/agent/linux/test_dhcp.py index 4a9cfaf5072..f1b42a3c2e7 100644 --- a/neutron/tests/unit/agent/linux/test_dhcp.py +++ b/neutron/tests/unit/agent/linux/test_dhcp.py @@ -231,7 +231,7 @@ class FakeV6PortExtraOpt(object): DhcpOpt(opt_name='dns-server', opt_value='ffea:3ba5:a17a:4ba3::100', ip_version=constants.IP_VERSION_6), - DhcpOpt(opt_name='malicious-option', + DhcpOpt(opt_name='malicious-option\nwith-new-line', opt_value='aaa\nbbb.ccc\n', ip_version=constants.IP_VERSION_6)]