#47419 Unhashed userpassword can accidentally get removed from mods
Closed: wontfix None Opened 10 years ago by nkinder.

An issue was encountered with FreeIPA where mods for the unhashed#user#password attribute are removed from the mods list before their 389 DS password policy plug-in is called. This plug-in expects the unhashed#user#password mod to be present. After some investigation, it turns out that we correctly move the cleartext password into an unhashed#user#password mod just before we call the preop plug-ins in modify.c. By the time the FreeIPA password policy plug-in is called, the unhashed#user#password mod has been removed from the list of mods. It turns out that this happens when the FreeIPA UUID plug-in passes the mods out and resets them in the pblock: ----------------------------------------------------------- (gdb) c Continuing. [Switching to Thread 0x7f36667e4700 (LWP 1862)] Hardware watchpoint 7: pb->pb_op->o_params.p.p_modify.modify_mods[9] Old value = (LDAPMod *) 0x7f36993eb140 New value = (LDAPMod *) 0x0 slapi_ch_free (ptr=ptr@entry=0x7f3699776098) at ldap/servers/slapd/ch_malloc.c:365 365 if(!counters_created) (gdb) bt #0 slapi_ch_free (ptr=ptr@entry=0x7f3699776098) at ldap/servers/slapd/ch_malloc.c:365 #1 0x00007f3698929834 in pack_mods (modsp=modsp@entry=0x7f3699a144f0) at ldap/servers/slapd/modutil.c:504 #2 0x00007f369892a01e in slapi_mods_get_ldapmods_passout (smods=0x7f3699a144f0) at ldap/servers/slapd/modutil.c:545 #3 0x00007f368dd16bb1 in ipauuid_pre_op (pb=<optimized out>, modtype=4) at ipa_uuid.c:1180 #4 0x00007f3698936255 in plugin_call_func (list=0x7f369945c080, operation=operation@entry=405, pb=pb@entry=0x7f36999641c0, call_one=call_one@entry=0) at ldap/servers/slapd/plugin.c:1453 #5 0x00007f36989363ba in plugin_call_list (pb=0x7f36999641c0, operation=405, list=<optimized out>) at ldap/servers/slapd/plugin.c:1415 #6 plugin_call_plugins (pb=pb@entry=0x7f36999641c0, whichfunction=whichfunction@entry=405) at ldap/servers/slapd/plugin.c:398 #7 0x00007f36989267dd in op_shared_modify (pb=pb@entry=0x7f36999641c0, pw_change=pw_change@entry=1, old_pw=0x0) at ldap/servers/slapd/modify.c:1052 #8 0x00007f3698927db2 in do_modify (pb=0x7f36999641c0) at ldap/servers/slapd/modify.c:415 #9 0x00007f3698df4d58 in connection_threadmain () at ldap/servers/slapd/connection.c:596 #10 0x00007f3696f2ae6d in _pt_root (arg=0x7f3699960ca0) at ../../../mozilla/nsprpub/pr/src/pthreads/ptthread.c:191 #11 0x00007f36968ccc53 in start_thread (arg=0x7f36667e4700) at pthread_create.c:308 #12 0x00007f36965f9ecd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113 ----------------------------------------------------------- The issue here is that pack_mods() is removing mods for attributes that have the "ignore" flag set. The unhashed#user#password mod has this flag set, so it gets removed. This was caused by the patch for ticket #47391. The unhashed#user#password mod can't be deleted, as it's needed for plug-ins like the FreeIPA password policy plug-in and for the replication changelog.

Bug description:
Change made in commit 4305dee
sets LDAP_MOD_IGNORE to unhashed password in mods once it's
stashed in an entry extenstion. It could be freed any time
once pack_mods is called.

Fix description: This patch stops setting LDAP_MOD_IGNORE to
unhashed password in mods.

Reviewed by Nathan (Thanks!!)

Pushed to master: commit cce8d34
Pushed to 389-ds-base-1.3.1: commit f8fabcb
Pushed to 389-ds-base-1.3.0: commit e1816e8

Linked to Bugzilla bug: https://bugzilla.redhat.com/show_bug.cgi?id=985013 (''Red Hat Enterprise Linux 7'')

Metadata Update from @nhosoi:
- Issue assigned to nhosoi
- Issue set to the milestone: 1.3.1.3

7 years ago

389-ds-base is moving from Pagure to Github. This means that new issues and pull requests
will be accepted only in 389-ds-base's github repository.

This issue has been cloned to Github and is available here:
- https://github.com/389ds/389-ds-base/issues/756

If you want to receive further updates on the issue, please navigate to the github issue
and click on subscribe button.

Thank you for understanding. We apologize for all inconvenience.

Metadata Update from @spichugi:
- Issue close_status updated to: wontfix (was: Fixed)

3 years ago

Login to comment on this ticket.

Metadata