diff options
author | Nathan Kinder <nkinder@redhat.com> | 2011-02-17 16:37:39 -0800 |
---|---|---|
committer | Rob Crittenden <rcritten@redhat.com> | 2011-02-17 21:36:50 -0500 |
commit | 27532f54687297e5dfa7d66503f22186d7fc3237 (patch) | |
tree | 10994433c2ba7ceff3f454fbbfd5a1e8efe2d857 /daemons/ipa-slapi-plugins/ipa-uuid | |
parent | eab4e36ee50a4d924d7889a167f4917fa9bf6136 (diff) | |
download | freeipa-27532f54687297e5dfa7d66503f22186d7fc3237.tar.gz freeipa-27532f54687297e5dfa7d66503f22186d7fc3237.tar.xz freeipa-27532f54687297e5dfa7d66503f22186d7fc3237.zip |
Reset target DN when generated UUID is used as RDN
When the UUID plug-in generates a value that is used in the RDN
of the entry being added, the old DN is free'd and replaced with
the new DN. The problem is that the operation in the pblock holds
a pointer to the old DN address. This can cause other plug-ins to
reference garbage, leading to incorrect results or crashes. This
was causing the attribute uniqueness plug-in to not work correctly,
resulting in duplicate netgroup entries.
The fix is to have the UUID plug-in reset the target DN after
changing the DN of the entry to be added.
ticket 963
Diffstat (limited to 'daemons/ipa-slapi-plugins/ipa-uuid')
-rw-r--r-- | daemons/ipa-slapi-plugins/ipa-uuid/ipa_uuid.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/daemons/ipa-slapi-plugins/ipa-uuid/ipa_uuid.c b/daemons/ipa-slapi-plugins/ipa-uuid/ipa_uuid.c index c6353aeed..5cd65b318 100644 --- a/daemons/ipa-slapi-plugins/ipa-uuid/ipa_uuid.c +++ b/daemons/ipa-slapi-plugins/ipa-uuid/ipa_uuid.c @@ -1109,6 +1109,10 @@ static int ipauuid_pre_op(Slapi_PBlock *pb, int modtype) slapi_ch_free_string(&nrdn); slapi_sdn_set_rdn(sdn, rdn); slapi_entry_set_sdn(e, sdn); + + /* reset the target DN since we've changed it. */ + slapi_pblock_set(pb, SLAPI_ADD_TARGET, + (char*)slapi_sdn_get_ndn(slapi_entry_get_sdn_const(e))); } slapi_rdn_free(&rdn); slapi_sdn_free(&sdn); |