From 880a84ce07928a92e6feb2b6848751d9c58e21a8 Mon Sep 17 00:00:00 2001 From: bybai Date: Fri, 27 Jul 2018 00:49:22 -0400 Subject: [PATCH] makedhcp check if mac format is valid --- xCAT-server/lib/xcat/plugins/dhcp.pm | 11 +++++++++++ xCAT-test/autotest/testcase/makedhcp/cases0 | 13 +++++++++++++ 2 files changed, 24 insertions(+) diff --git a/xCAT-server/lib/xcat/plugins/dhcp.pm b/xCAT-server/lib/xcat/plugins/dhcp.pm index 1ca4bd68a..1bd2e5357 100644 --- a/xCAT-server/lib/xcat/plugins/dhcp.pm +++ b/xCAT-server/lib/xcat/plugins/dhcp.pm @@ -587,6 +587,7 @@ sub addnode ); return; } + my @macs = split(/\|/, $ent->{mac}); my $mace; my $deflstaments = $lstatements; @@ -603,6 +604,16 @@ sub addnode $hname = $node; } #Default to hostname equal to nodename unless ($mac) { next; } #Skip corrupt format + if ($mac !~ /^[0-9a-fA-F]{2}(-[0-9a-fA-F]{2}){5}$|^[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}$/) + { + $callback->( + { + error => ["Invalid mac address $mac for $node"], + errorcode => [1] + } + ); + next; + } my $ip = getipaddr($hname, OnlyV4 => 1); if ($hname eq '*NOIP*') { $hname = $node . "-noip" . $mac; diff --git a/xCAT-test/autotest/testcase/makedhcp/cases0 b/xCAT-test/autotest/testcase/makedhcp/cases0 index c522ef2a3..d117f3997 100644 --- a/xCAT-test/autotest/testcase/makedhcp/cases0 +++ b/xCAT-test/autotest/testcase/makedhcp/cases0 @@ -66,6 +66,19 @@ cmd:rmdef testnode1 cmd:if [ -f "/etc/dhcp/dhcpd.conf" ];then mv -f /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak ; elif [ -f "/etc/dhcpd.conf" ]; then mv -f /etc/dhcpd.conf /etc/dhcpd.conf.bak; fi end +start:makedhcp_a_linux_check_invalid_mac +description:Define all nodes to the DHCP server. If mac format is invalid, makedhcp -a print error and return 1 +os:Linux +label:mn_only,dhcp +cmd:lsdef -l $$CN -z > /tmp/$$CN.stanza +cmd:chdef -t node -o $$CN mac=11:22:33 +cmd:makedhcp $$CN +check:rc!=0 +check:output!~ ^11:22:33$ +cmd:chdef -t node -o $$CN mac= +cmd:cat /tmp/$$CN.stanza | chdef -z +end + start:makedhcp_a_d_linux os:Linux label:mn_only,dhcp