[Date Prev][Date Next]
(ITS#6169) dds overlay bug(s) when expiring entries
Full_Name: Hallvard B Furuseth
Version: HEAD, RE24
Submission from: (NULL) (220.127.116.11)
Submitted by: hallvard
Thinko in dds_expire():
Traversing a list chained on (struct dds_expire_t).de_next,
it keeps dds_expire_t **dep == &(previous element).de_next.
Before freeing (de = *dep), it points dep into de. Fixing.
Suspicious code in same function:
The 'default:' branch says "deferring" (deferring what? deletion?)
and does not increment ndeletes, yet 'dds_expire_t *de' is deleted
in that case as well. Is that intentional? I don't know dds. If
it's not, we could just move the free() into 'case LDAP_SUCCESS:'
and remove the 'de = NULL;' in the LDAP_NOT_ALLOWED_ON_NONLEAF case.