[Date Prev][Date Next] [Chronological] [Thread] [Top]

(ITS#6169) dds overlay bug(s) when expiring entries



Full_Name: Hallvard B Furuseth
Version: HEAD, RE24
OS: Linux
URL: 
Submission from: (NULL) (129.240.6.233)
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.