Author: mzugec Date: Thu Apr 9 14:17:37 2009 New Revision: 56723 URL: http://svn.opensuse.org/viewcvs/yast?rev=56723&view=rev Log: fixed netmask/prefixlen validation and correct write (bnc#493222) Modified: trunk/network/VERSION trunk/network/package/yast2-network.changes trunk/network/src/lan/address.ycp trunk/network/src/lan/virtual.ycp trunk/network/src/routines/routines.ycp Modified: trunk/network/VERSION URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/VERSION?rev=56723&r1=56722&r2=56723&view=diff ============================================================================== --- trunk/network/VERSION (original) +++ trunk/network/VERSION Thu Apr 9 14:17:37 2009 @@ -1 +1 @@ -2.18.26 +2.18.27 Modified: trunk/network/package/yast2-network.changes URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/package/yast2-network.changes?rev=56723&r1=56722&r2=56723&view=diff ============================================================================== --- trunk/network/package/yast2-network.changes (original) +++ trunk/network/package/yast2-network.changes Thu Apr 9 14:17:37 2009 @@ -1,4 +1,10 @@ ------------------------------------------------------------------- +Thu Apr 9 14:05:51 CEST 2009 - mzugec@suse.de + +- fixed netmask/prefixlen validation and correct write (bnc#493222) +- 2.18.27 + +------------------------------------------------------------------- Thu Apr 9 10:17:43 CEST 2009 - kmachalkova@suse.cz - Make proxy configuration autoyast-clonable (bnc#492786) Modified: trunk/network/src/lan/address.ycp URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/lan/address.ycp?rev=56723&r1=56722&r2=56723&view=diff ============================================================================== --- trunk/network/src/lan/address.ycp (original) +++ trunk/network/src/lan/address.ycp Thu Apr 9 14:17:37 2009 @@ -274,7 +274,10 @@ settings["IPADDR"]=(string)UI::QueryWidget(`ipaddr, `Value); string mask = (string)UI::QueryWidget(`netmask, `Value); if(substring(mask, 0,1)=="/") settings["PREFIXLEN"]=substring(mask, 1); - else settings["NETMASK"]=mask; + else { + if (Netmask::Check6(mask)) settings["PREFIXLEN"]=mask; + else settings["NETMASK"]=mask; + } settings["HOSTNAME"]=(string)UI::QueryWidget(`hostname, `Value); break; default : switch ((symbol)UI::QueryWidget(`dyn, `Value)){ @@ -440,7 +443,7 @@ } string mask=(string) UI::QueryWidget (`netmask, `Value); - if(!validPrefixOrNetmask(mask)){ + if(!validPrefixOrNetmask(ipa, mask)){ Popup::Error(_("No valid netmask or prefix lenght.")); UI::SetFocus(`netmask); return false; Modified: trunk/network/src/lan/virtual.ycp URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/lan/virtual.ycp?rev=56723&r1=56722&r2=56723&view=diff ============================================================================== --- trunk/network/src/lan/virtual.ycp (original) +++ trunk/network/src/lan/virtual.ycp Thu Apr 9 14:17:37 2009 @@ -139,7 +139,10 @@ alias["IPADDR"] = e[2]:""; if (size(e[1]:"")>0) alias["LABEL"]=e[1]:""; if(substring(e[3]:"", 0,1)=="/") alias["PREFIXLEN"]=substring(e[3]:"", 1); - else alias["NETMASK"]=e[3]:""; + else { + if (Netmask::Check6(e[3]:"")) alias["PREFIXLEN"]=e[3]:""; + else alias["NETMASK"]=e[3]:""; + } LanItems::aliases[tostring(size(LanItems::aliases))] = alias; // aliases_to_delete[tostring(size(LanItems::aliases))] = nil; }); @@ -215,17 +218,17 @@ */ host = add(host, val); - val = (string) UI::QueryWidget(`id(`ipaddr), `Value); - if(!IP::Check(val)) { + string ip = (string) UI::QueryWidget(`id(`ipaddr), `Value); + if(!IP::Check(ip)) { /* Popup::Error text */ Popup::Error(_("The IP address is invalid.")); UI::SetFocus(`id(`ipaddr)); continue; } - host = add(host, val); + host = add(host, ip); val = (string) UI::QueryWidget(`id(`netmask), `Value); - if(!validPrefixOrNetmask(val)) { + if(!validPrefixOrNetmask(ip, val)) { /* Popup::Error text */ Popup::Error(_("The subnet mask is invalid.")); UI::SetFocus(`id(`netmask)); Modified: trunk/network/src/routines/routines.ycp URL: http://svn.opensuse.org/viewcvs/yast/trunk/network/src/routines/routines.ycp?rev=56723&r1=56722&r2=56723&view=diff ============================================================================== --- trunk/network/src/routines/routines.ycp (original) +++ trunk/network/src/routines/routines.ycp Thu Apr 9 14:17:37 2009 @@ -23,7 +23,8 @@ import "Map"; import "Netmask"; import "Mode"; - +import "IP"; +import "Netmask"; /** * Abort function @@ -780,16 +781,14 @@ return Hardware; } -boolean validPrefixOrNetmask(string val){ +boolean validPrefixOrNetmask(string ip, string mask){ boolean valid_mask=false; - if (Netmask::Check4(val)) valid_mask=true; - else - if (regexpmatch(val, "^/[[:digit:]]{1,2}$") && tointeger(substring(val, 1))<=32) valid_mask=true; - else - if (Netmask::Check6(val)) valid_mask=true; - else - if (regexpmatch(val, "^/[[:digit:]]{1,3}$") && tointeger(substring(val, 1))<=128) valid_mask=true; + if (substring(mask, 0,1)=="/") mask=substring(mask,1); + + if (IP::Check4(ip) && Netmask::Check4(mask)) valid_mask=true; + else if (IP::Check6(ip) && Netmask::Check6(mask)) valid_mask=true; + else y2warning("IP address %1 is not valid", ip); return valid_mask; } -- To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org For additional commands, e-mail: yast-commit+help@opensuse.org