mirror of
https://github.com/samba-team/samba.git
synced 2025-08-02 00:22:11 +03:00
r10190: Do some very basic input checking when provisioning.
(This used to be commit 87f25fe49c
)
This commit is contained in:
committed by
Gerald (Jerry) Carter
parent
f642fd96d0
commit
342d229b40
@ -30,7 +30,6 @@
|
||||
<arg choice="opt">--server</arg>
|
||||
<arg choice="opt">--dcom-proxy</arg>
|
||||
<arg choice="opt">--com-header</arg>
|
||||
<arg choice="opt">--odl</arg>
|
||||
<arg choice="opt">--warn-compat</arg>
|
||||
<arg choice="opt">--quiet</arg>
|
||||
<arg choice="opt">--verbose</arg>
|
||||
|
@ -6,7 +6,7 @@ PIDL_EXTRA_ARGS="$*"
|
||||
|
||||
[ -d librpc/gen_ndr ] || mkdir -p librpc/gen_ndr || exit 1
|
||||
|
||||
PIDL="$PERL ./pidl/pidl --outputdir librpc/gen_ndr --ndr-header --header --ndr-parser --server --client --dcom-proxy --com-header --swig --odl --ejs $PIDL_EXTRA_ARGS"
|
||||
PIDL="$PERL ./pidl/pidl --outputdir librpc/gen_ndr --ndr-header --header --ndr-parser --server --client --dcom-proxy --com-header --swig --ejs $PIDL_EXTRA_ARGS"
|
||||
|
||||
if [ x$FULLBUILD = xFULL ]; then
|
||||
echo Rebuilding all idl files in librpc/idl
|
||||
|
@ -233,7 +233,9 @@ function provision(subobj, message, blank, paths)
|
||||
subobj.REALM = strlower(subobj.REALM);
|
||||
subobj.HOSTNAME = strlower(subobj.HOSTNAME);
|
||||
subobj.DOMAIN = strupper(subobj.DOMAIN);
|
||||
assert(valid_netbios_name(subobj.DOMAIN));
|
||||
subobj.NETBIOSNAME = strupper(subobj.HOSTNAME);
|
||||
assert(valid_netbios_name(subobj.NETBIOSNAME));
|
||||
var rdns = split(",", subobj.BASEDN);
|
||||
subobj.RDN_DC = substr(rdns[0], strlen("DC="));
|
||||
|
||||
@ -431,5 +433,29 @@ member: %s
|
||||
return enable_account(ldb, user_dn);
|
||||
}
|
||||
|
||||
// Check whether a name is valid as a NetBIOS name.
|
||||
// FIXME: There are probably more constraints here
|
||||
function valid_netbios_name(name)
|
||||
{
|
||||
if (strlen(name) > 13) return false;
|
||||
if (strstr(name, ".")) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
function provision_validate(subobj, message)
|
||||
{
|
||||
if (!valid_netbios_name(subobj.DOMAIN)) {
|
||||
message("Invalid NetBIOS name for domain\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!valid_netbios_name(subobj.NETBIOSNAME)) {
|
||||
message("Invalid NetBIOS name for host\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
|
@ -108,6 +108,11 @@ for (r in options) {
|
||||
|
||||
var blank = (options["blank"] != undefined);
|
||||
|
||||
if (!provision_validate(subobj, message)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
message("Provisioning for %s in realm %s\n", subobj.DOMAIN, subobj.REALM);
|
||||
message("Using administrator password: %s\n", subobj.ADMINPASS);
|
||||
provision(subobj, message, blank, provision_default_paths(subobj));
|
||||
|
@ -1,4 +1,4 @@
|
||||
; generate by provision.pl
|
||||
; generated by provision.pl
|
||||
$ORIGIN ${DNSDOMAIN}.
|
||||
$TTL 1W
|
||||
@ IN SOA @ hostmaster (
|
||||
|
@ -58,6 +58,8 @@ if (form['submit'] == "Provision") {
|
||||
} else if (subobj.ADMINPASS == "") {
|
||||
write("<h3>You must choose an administrator password. Please try again.</h3>");
|
||||
f.display();
|
||||
} else if (!provision_validate(subobj, writefln)) {
|
||||
f.display();
|
||||
} else {
|
||||
provision(subobj, writefln, false, provision_default_paths(subobj));
|
||||
}
|
||||
|
Reference in New Issue
Block a user