diff --git a/servers/slapd/dn.c b/servers/slapd/dn.c index b52079f258..c74ff919b1 100644 --- a/servers/slapd/dn.c +++ b/servers/slapd/dn.c @@ -347,8 +347,24 @@ char **dn_subtree( Backend *be, char *dn ) { - /* not yet implemented */ - return NULL; + char *child, *parent; + char **subtree = NULL; + + child = dn; + + do { + charray_add( &subtree, child ); + + parent = dn_parent( be, child ); + + if( child != dn ) { + free( child ); + } + + child = parent; + } while ( child != NULL ); + + return subtree; }