diff --git a/src/include/66/utils.h b/src/include/66/utils.h
index 128b2e830969eb66d25b33af22d631c9fce1321f..53b545fae2310be3a8f0aae655de53fecf4e2b0e 100644
--- a/src/include/66/utils.h
+++ b/src/include/66/utils.h
@@ -59,6 +59,7 @@ extern void name_isvalid(char const *name) ;
 
 extern int set_ownerhome_stack(char *store) ;
 extern int set_ownersysdir_stack(char *base, uid_t owner) ;
+extern int set_ownerhome_stack_byuid(char *store, uid_t owner) ;
 extern void set_treeinfo(ssexec_t *info) ;
 
 #endif
diff --git a/src/lib66/utils/set_ownerhome.c b/src/lib66/utils/set_ownerhome.c
index a69b0cbdf0b9ba5a806682cdf331c7d49ccce2ff..bef796f4c8cb35b5c69282f934c88079f3a45822 100644
--- a/src/lib66/utils/set_ownerhome.c
+++ b/src/lib66/utils/set_ownerhome.c
@@ -47,13 +47,13 @@ int set_ownerhome(stralloc *base,uid_t owner)
     return 1 ;
 }
 
-int set_ownerhome_stack(char *store)
+int set_ownerhome_stack_byuid(char *store, uid_t owner)
 {
     log_flow() ;
 
     char const *user_home = 0 ;
     int e = errno ;
-    struct passwd *st = getpwuid(getuid()) ;
+    struct passwd *st = getpwuid(owner) ;
     errno = 0 ;
     if (!st) {
         if (!errno) errno = ESRCH ;
@@ -73,3 +73,10 @@ int set_ownerhome_stack(char *store)
 
     return 1 ;
 }
+
+int set_ownerhome_stack(char *store)
+{
+    log_flow() ;
+
+    return set_ownerhome_stack_byuid(store, getuid()) ;
+}