diff --git a/src/lib66/sanitize/sanitize_scandir.c b/src/lib66/sanitize/sanitize_scandir.c
index 46dfa8c696f1ce4a85148f6f2898609b036f32f8..2cb4a9f63216606185ed3b0a54c6489898e5602b 100644
--- a/src/lib66/sanitize/sanitize_scandir.c
+++ b/src/lib66/sanitize/sanitize_scandir.c
@@ -93,7 +93,7 @@ static void compute_supervision_dir(resolve_service_t *res)
 
     umask(hmod) ;
 }
-
+#include <stdlib.h>
 void sanitize_scandir(resolve_service_t *res, uint32_t flag)
 {
     log_flow() ;
@@ -102,12 +102,10 @@ void sanitize_scandir(resolve_service_t *res, uint32_t flag)
     char *name = res->sa.s + res->name ;
     size_t namelen = strlen(name) ;
     size_t livelen = strlen(res->sa.s + res->live.livedir) ;
-    size_t scandirlen = strlen(res->sa.s + res->live.scandir) ;
+    size_t scandirlen = livelen + SS_SCANDIR_LEN + 1 + strlen(res->sa.s + res->ownerstr)  ;
 
     char svcandir[scandirlen + 1] ;
-    auto_strings(svcandir, res->sa.s + res->live.scandir) ;
-
-    svcandir[scandirlen - namelen - 1] = 0 ;
+    auto_strings(svcandir, res->sa.s + res->live.livedir, SS_SCANDIR, "/", res->sa.s + res->ownerstr) ;
 
     r = access(res->sa.s + res->live.scandir, F_OK) ;
     if (r == -1 && FLAGS_ISSET(flag, STATE_FLAGS_TOINIT)) {