I note that the behaviour of ad_cmp() has changed recently, to return 1 if the strings are unequal lengths. Whilst this is obviously a good optimisation, it breaks anything that depends on the result being a lexicographical comparison of two attribute types. (We had used ad_cmp() to build an AVL tree in our backend.)
Just thought I'd point this out, as it took me a while to track down in our code. I haven't checked the rest of slapd to see whether it is used in this fashion.