Full_Name: Hallvard B Furuseth Version: OS: URL: Submission from: (NULL) (129.240.6.233) Submitted by: hallvard
Given CSNs of different lengths, overlays/accesslog.c:log_old_lookup() remembers truncated versions of the longer CSNs as "max CSN". The remembered length shrinks but never grows as CSNs change. I think the test if ( len > pd->csn.bv_len ) len = pd->csn.bv_len; should be if ( len > LDAP_PVT_CSNSTR_BUFSIZE ) len = LDAP_PVT_CSNSTR_BUFSIZE; since as far as I can tell pd->csn.bv_val is always csnbuf from accesslog_purge().
The compare just below must be fixed to match. It is buggy now anyway, CSNs of different lengths can compare equal.