summaryrefslogtreecommitdiffstats
path: root/lib/ldaputil/ldapauth.c
diff options
context:
space:
mode:
authorRich Megginson <rmeggins@redhat.com>2008-08-27 21:05:39 +0000
committerRich Megginson <rmeggins@redhat.com>2008-08-27 21:05:39 +0000
commitcb3c82e267ef5d9ae6161d4ab06f406e482dd9ad (patch)
treecedd22b98f8f015c0fd4e23fc66e1e0ed037c39c /lib/ldaputil/ldapauth.c
parentd9d13811cfe7fbb71f54dbc7eada95a027001db1 (diff)
downloadds-cb3c82e267ef5d9ae6161d4ab06f406e482dd9ad.tar.gz
ds-cb3c82e267ef5d9ae6161d4ab06f406e482dd9ad.tar.xz
ds-cb3c82e267ef5d9ae6161d4ab06f406e482dd9ad.zip
Resolves: bug 458675
Bug Description: Memory leaks in valueset code Reviewed by: nkinder,nhosoi (Thanks!) Branch: HEAD Fix Description: The first leak occurs when you are using replication and you add values to an attribute that were previously deleted - that is, the values that you want to add are on the attribute's deleted values list and are being "resurrected". This leak is caused by an improper bit test (foo & bar|baz). The or | has higher precedence and is evaluated first. The fix is to use parentheses (foo & (bar|baz)). Note that this issue was flagged by the compiler gcc with -Wall. The second leak is caused when several values are being added to an attribute, and the list contains non-sequential duplicate values (e.g. foo, bar, baz, foo). The code uses an array of Slapi_Value* called keyvals. When a valid value is found, the Slapi_Value* is moved from keyvals to valuetreep and the keyvals array index is set to NULL. This array is passed to valuearray_free to free the individual Slapi_Value* and the array itself. This works fine in the non-error case because there are no Slapi_Value* elements to free, so it just frees the array. However, in the duplicate value case, some of the elements have already been set to NULL, so those are skipped over by valuearray_free. The fix is to introduce a new function valuearray_free_ext that takes an additional argument which is the array index to start freeing from. That way the non-NULL Slapi_Value* elements can be freed along with the array itself. Platforms tested: RHEL5, Fedora 8 Flag Day: no Doc impact: no QA impact: should be covered by regular nightly and manual testing New Tests integrated into TET: none
Diffstat (limited to 'lib/ldaputil/ldapauth.c')
0 files changed, 0 insertions, 0 deletions