From 1e4b23f6275d81e391bf616c65ce52bd30ec8774 Mon Sep 17 00:00:00 2001
From: obarun <eric@obarun.org>
Date: Tue, 13 Jun 2023 09:38:46 +1100
Subject: [PATCH] add set_ownerhome_stack_byuid function

---
 src/include/66/utils.h          |  1 +
 src/lib66/utils/set_ownerhome.c | 11 +++++++++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/include/66/utils.h b/src/include/66/utils.h
index 128b2e83..53b545fa 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 a69b0cbd..bef796f4 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()) ;
+}
-- 
GitLab