static BOOL account_policy_set_default_on_empty(int account_policy) { uint32 value; if (!account_policy_get(account_policy, &value) && !account_policy_get_default(account_policy, &value)) { return False; } return account_policy_set(account_policy, value); }
static int reinit_account_policies (void) { int i; for (i=1; decode_account_policy_name(i) != NULL; i++) { uint32_t policy_value; if (!account_policy_get_default(i, &policy_value)) { fprintf(stderr, "Can't get default account policy\n"); return -1; } if (!account_policy_set(i, policy_value)) { fprintf(stderr, "Can't set account policy in tdb\n"); return -1; } } return 0; }
static NTSTATUS add_new_domain_account_policies(struct smbldap_state *ldap_state, const char *domain_name) { NTSTATUS ntstatus = NT_STATUS_UNSUCCESSFUL; int i, rc; uint32_t policy_default; const char *policy_attr = NULL; char *dn = NULL; LDAPMod **mods = NULL; char *escape_domain_name; DEBUG(3,("add_new_domain_account_policies: Adding new account policies for domain\n")); escape_domain_name = escape_rdn_val_string_alloc(domain_name); if (!escape_domain_name) { DEBUG(0, ("Out of memory!\n")); return NT_STATUS_NO_MEMORY; } if (asprintf(&dn, "%s=%s,%s", get_attr_key2string(dominfo_attr_list, LDAP_ATTR_DOMAIN), escape_domain_name, lp_ldap_suffix(talloc_tos())) < 0) { SAFE_FREE(escape_domain_name); return NT_STATUS_NO_MEMORY; } SAFE_FREE(escape_domain_name); for (i=1; decode_account_policy_name(i) != NULL; i++) { char *val = NULL; policy_attr = get_account_policy_attr(i); if (!policy_attr) { DEBUG(0,("add_new_domain_account_policies: ops. no policy!\n")); continue; } if (!account_policy_get_default(i, &policy_default)) { DEBUG(0,("add_new_domain_account_policies: failed to get default account policy\n")); SAFE_FREE(dn); return ntstatus; } DEBUG(10,("add_new_domain_account_policies: adding \"%s\" with value: %d\n", policy_attr, policy_default)); if (asprintf(&val, "%d", policy_default) < 0) { SAFE_FREE(dn); return NT_STATUS_NO_MEMORY; } smbldap_set_mod( &mods, LDAP_MOD_REPLACE, policy_attr, val); rc = smbldap_modify(ldap_state, dn, mods); SAFE_FREE(val); if (rc!=LDAP_SUCCESS) { char *ld_error = NULL; ldap_get_option(ldap_state->ldap_struct, LDAP_OPT_ERROR_STRING, &ld_error); DEBUG(1,("add_new_domain_account_policies: failed to add account policies to dn= %s with: %s\n\t%s\n", dn, ldap_err2string(rc), ld_error ? ld_error : "unknown")); SAFE_FREE(ld_error); SAFE_FREE(dn); ldap_mods_free(mods, True); return ntstatus; } } SAFE_FREE(dn); ldap_mods_free(mods, True); return NT_STATUS_OK; }