(JAGag29851) If replication is enabled and you add a value to an attribute, like a cn of FOO, then delete that value, and then add a cn of foo (lower case), it will show up in the entry as FOO rather than foo. The code in entry_add_present_values_wsi() eventually calls slapi_attr_value_cmp() to figure out if the value exists on the deleted list. slapi_attr_value_cmp() uses the proper syntax plugin compare deleted values to the value being added and since cn is case-ignore, it's a match. Since it's determined to exist on the deleted list it's simply moved onto the present list, and the old case is resurrected.
Created attachment 148976 [details] fix proposal, compares Slapi_Value arrays and fix the case Please review: Currently when a value is added and it's present on the deleted list (in entrywsi), it's moved to the present list. The proposed change will perform a bitwise comparison on the values from the deleted list with the values that the client passed for the operation, and if they don't match, it replaces the resurrected Slapi_Value's berval with the one with the proper case specified by the client.
Fix looks good.
*** This bug has been marked as a duplicate of bug 428929 ***