mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
s3-passdb Make pdb_element_is_changed available to all passdb modules
This will allow pdb_samba4 to use this Andrew Bartlett
This commit is contained in:
parent
c5e41a21dd
commit
add8505fde
@ -1088,3 +1088,26 @@ uint32_t pdb_build_fields_present(struct samu *sampass)
|
|||||||
/* value set to all for testing */
|
/* value set to all for testing */
|
||||||
return 0x00ffffff;
|
return 0x00ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
Helper function to determine for update_sam_account whether
|
||||||
|
we need LDAP modification.
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
bool pdb_element_is_changed(const struct samu *sampass,
|
||||||
|
enum pdb_elements element)
|
||||||
|
{
|
||||||
|
return IS_SAM_CHANGED(sampass, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
Helper function to determine for update_sam_account whether
|
||||||
|
we need LDAP modification.
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
bool pdb_element_is_set_or_changed(const struct samu *sampass,
|
||||||
|
enum pdb_elements element)
|
||||||
|
{
|
||||||
|
return (IS_SAM_SET(sampass, element) ||
|
||||||
|
IS_SAM_CHANGED(sampass, element));
|
||||||
|
}
|
||||||
|
@ -1941,17 +1941,6 @@ static NTSTATUS ldapsam_delete_sam_account(struct pdb_methods *my_methods,
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
Helper function to determine for update_sam_account whether
|
|
||||||
we need LDAP modification.
|
|
||||||
*********************************************************************/
|
|
||||||
|
|
||||||
static bool element_is_changed(const struct samu *sampass,
|
|
||||||
enum pdb_elements element)
|
|
||||||
{
|
|
||||||
return IS_SAM_CHANGED(sampass, element);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
Update struct samu.
|
Update struct samu.
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
@ -1997,7 +1986,7 @@ static NTSTATUS ldapsam_update_sam_account(struct pdb_methods *my_methods, struc
|
|||||||
DEBUG(4, ("ldapsam_update_sam_account: user %s to be modified has dn: %s\n", pdb_get_username(newpwd), dn));
|
DEBUG(4, ("ldapsam_update_sam_account: user %s to be modified has dn: %s\n", pdb_get_username(newpwd), dn));
|
||||||
|
|
||||||
if (!init_ldap_from_sam(ldap_state, entry, &mods, newpwd,
|
if (!init_ldap_from_sam(ldap_state, entry, &mods, newpwd,
|
||||||
element_is_changed)) {
|
pdb_element_is_changed)) {
|
||||||
DEBUG(0, ("ldapsam_update_sam_account: init_ldap_from_sam failed!\n"));
|
DEBUG(0, ("ldapsam_update_sam_account: init_ldap_from_sam failed!\n"));
|
||||||
TALLOC_FREE(dn);
|
TALLOC_FREE(dn);
|
||||||
if (mods != NULL)
|
if (mods != NULL)
|
||||||
@ -2013,7 +2002,7 @@ static NTSTATUS ldapsam_update_sam_account(struct pdb_methods *my_methods, struc
|
|||||||
return NT_STATUS_OK;
|
return NT_STATUS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ldapsam_modify_entry(my_methods,newpwd,dn,mods,LDAP_MOD_REPLACE, element_is_changed);
|
ret = ldapsam_modify_entry(my_methods,newpwd,dn,mods,LDAP_MOD_REPLACE, pdb_element_is_changed);
|
||||||
|
|
||||||
if (mods != NULL) {
|
if (mods != NULL) {
|
||||||
ldap_mods_free(mods,True);
|
ldap_mods_free(mods,True);
|
||||||
@ -2132,18 +2121,6 @@ static NTSTATUS ldapsam_rename_sam_account(struct pdb_methods *my_methods,
|
|||||||
return NT_STATUS_OK;
|
return NT_STATUS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
Helper function to determine for update_sam_account whether
|
|
||||||
we need LDAP modification.
|
|
||||||
*********************************************************************/
|
|
||||||
|
|
||||||
static bool element_is_set_or_changed(const struct samu *sampass,
|
|
||||||
enum pdb_elements element)
|
|
||||||
{
|
|
||||||
return (IS_SAM_SET(sampass, element) ||
|
|
||||||
IS_SAM_CHANGED(sampass, element));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
Add struct samu to LDAP.
|
Add struct samu to LDAP.
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
@ -2194,7 +2171,7 @@ static NTSTATUS ldapsam_add_sam_account(struct pdb_methods *my_methods, struct s
|
|||||||
ldap_msgfree(result);
|
ldap_msgfree(result);
|
||||||
result = NULL;
|
result = NULL;
|
||||||
|
|
||||||
if (element_is_set_or_changed(newpwd, PDB_USERSID)) {
|
if (pdb_element_is_set_or_changed(newpwd, PDB_USERSID)) {
|
||||||
rc = ldapsam_get_ldap_user_by_sid(ldap_state,
|
rc = ldapsam_get_ldap_user_by_sid(ldap_state,
|
||||||
sid, &result);
|
sid, &result);
|
||||||
if (rc == LDAP_SUCCESS) {
|
if (rc == LDAP_SUCCESS) {
|
||||||
@ -2330,7 +2307,7 @@ static NTSTATUS ldapsam_add_sam_account(struct pdb_methods *my_methods, struct s
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!init_ldap_from_sam(ldap_state, entry, &mods, newpwd,
|
if (!init_ldap_from_sam(ldap_state, entry, &mods, newpwd,
|
||||||
element_is_set_or_changed)) {
|
pdb_element_is_set_or_changed)) {
|
||||||
DEBUG(0, ("ldapsam_add_sam_account: init_ldap_from_sam failed!\n"));
|
DEBUG(0, ("ldapsam_add_sam_account: init_ldap_from_sam failed!\n"));
|
||||||
if (mods != NULL) {
|
if (mods != NULL) {
|
||||||
ldap_mods_free(mods, true);
|
ldap_mods_free(mods, true);
|
||||||
@ -2354,7 +2331,7 @@ static NTSTATUS ldapsam_add_sam_account(struct pdb_methods *my_methods, struct s
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ldapsam_modify_entry(my_methods,newpwd,dn,mods,ldap_op, element_is_set_or_changed);
|
ret = ldapsam_modify_entry(my_methods,newpwd,dn,mods,ldap_op, pdb_element_is_set_or_changed);
|
||||||
if (!NT_STATUS_IS_OK(ret)) {
|
if (!NT_STATUS_IS_OK(ret)) {
|
||||||
DEBUG(0,("ldapsam_add_sam_account: failed to modify/add user with uid = %s (dn = %s)\n",
|
DEBUG(0,("ldapsam_add_sam_account: failed to modify/add user with uid = %s (dn = %s)\n",
|
||||||
pdb_get_username(newpwd),dn));
|
pdb_get_username(newpwd),dn));
|
||||||
@ -5367,7 +5344,7 @@ static NTSTATUS ldapsam_create_user(struct pdb_methods *my_methods,
|
|||||||
return NT_STATUS_UNSUCCESSFUL;
|
return NT_STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!init_ldap_from_sam(ldap_state, entry, &mods, user, element_is_set_or_changed)) {
|
if (!init_ldap_from_sam(ldap_state, entry, &mods, user, pdb_element_is_set_or_changed)) {
|
||||||
DEBUG(1,("ldapsam_create_user: Unable to fill user structs\n"));
|
DEBUG(1,("ldapsam_create_user: Unable to fill user structs\n"));
|
||||||
return NT_STATUS_UNSUCCESSFUL;
|
return NT_STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
@ -197,6 +197,10 @@ bool pdb_set_backend_private_data(struct samu *sampass, void *private_data,
|
|||||||
bool pdb_set_pass_can_change(struct samu *sampass, bool canchange);
|
bool pdb_set_pass_can_change(struct samu *sampass, bool canchange);
|
||||||
bool pdb_set_plaintext_passwd(struct samu *sampass, const char *plaintext);
|
bool pdb_set_plaintext_passwd(struct samu *sampass, const char *plaintext);
|
||||||
uint32_t pdb_build_fields_present(struct samu *sampass);
|
uint32_t pdb_build_fields_present(struct samu *sampass);
|
||||||
|
bool pdb_element_is_changed(const struct samu *sampass,
|
||||||
|
enum pdb_elements element);
|
||||||
|
bool pdb_element_is_set_or_changed(const struct samu *sampass,
|
||||||
|
enum pdb_elements element);
|
||||||
|
|
||||||
/* The following definitions come from passdb/pdb_interface.c */
|
/* The following definitions come from passdb/pdb_interface.c */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user