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()) ; +}