1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-09 08:58:35 +03:00

s4:password_hash - load the domain parameters from the "loadparm context"

And don't cut them out from the DNS hostname.
This commit is contained in:
Matthias Dieter Wallnöfer 2009-10-14 11:40:25 +02:00
parent 8a505ec755
commit 5931734be6

View File

@ -87,9 +87,9 @@ struct domain_data {
bool store_cleartext;
uint_t pwdProperties;
uint_t pwdHistoryLength;
char *netbios_domain;
char *dns_domain;
char *realm;
const char *netbios_domain;
const char *dns_domain;
const char *realm;
};
struct setup_password_fields_io {
@ -1552,9 +1552,8 @@ static int get_domain_data_callback(struct ldb_request *req,
struct ldb_context *ldb;
struct domain_data *data;
struct ph_context *ac;
struct loadparm_context *lp_ctx;
int ret;
char *tmp;
char *p;
ac = talloc_get_type(req->context, struct ph_context);
ldb = ldb_module_get_ctx(ac->module);
@ -1591,43 +1590,13 @@ static int get_domain_data_callback(struct ldb_request *req,
* but that doesn't really matter, as it's just used for salt
* and kerberos principals, which don't exist here */
tmp = ldb_dn_canonical_string(data, ares->message->dn);
if (!tmp) {
return ldb_module_done(ac->req, NULL, NULL,
LDB_ERR_OPERATIONS_ERROR);
}
lp_ctx = talloc_get_type(ldb_get_opaque(ldb, "loadparm"),
struct loadparm_context);
/* But it puts a trailing (or just before 'builtin') / on things, so kill that */
p = strchr(tmp, '/');
if (p) {
p[0] = '\0';
}
data->dns_domain = lp_dnsdomain(lp_ctx);
data->realm = lp_realm(lp_ctx);
data->netbios_domain = lp_workgroup(lp_ctx);
data->dns_domain = strlower_talloc(data, tmp);
if (data->dns_domain == NULL) {
ldb_oom(ldb);
return ldb_module_done(ac->req, NULL, NULL,
LDB_ERR_OPERATIONS_ERROR);
}
data->realm = strupper_talloc(data, tmp);
if (data->realm == NULL) {
ldb_oom(ldb);
return ldb_module_done(ac->req, NULL, NULL,
LDB_ERR_OPERATIONS_ERROR);
}
/* FIXME: NetbIOS name is *always* the first domain component ?? -SSS */
p = strchr(tmp, '.');
if (p) {
p[0] = '\0';
}
data->netbios_domain = strupper_talloc(data, tmp);
if (data->netbios_domain == NULL) {
ldb_oom(ldb);
return ldb_module_done(ac->req, NULL, NULL,
LDB_ERR_OPERATIONS_ERROR);
}
talloc_free(tmp);
ac->domain = data;
break;
@ -1673,7 +1642,7 @@ static int build_domain_data_request(struct ph_context *ac)
ldb = ldb_module_get_ctx(ac->module);
filter = talloc_asprintf(ac,
"(&(objectSid=%s)(|(objectClass=domain)(objectClass=builtinDomain)))",
"(objectSid=%s)",
ldap_encode_ndr_dom_sid(ac, ac->domain_sid));
if (filter == NULL) {
ldb_oom(ldb);
@ -1682,7 +1651,7 @@ static int build_domain_data_request(struct ph_context *ac)
return ldb_build_search_req(&ac->dom_req, ldb, ac,
ldb_get_default_basedn(ldb),
LDB_SCOPE_SUBTREE,
LDB_SCOPE_BASE,
filter, attrs,
NULL,
ac, get_domain_data_callback,