diff options
author | Luke Leighton <lkcl@samba.org> | 2000-04-05 04:29:37 +0000 |
---|---|---|
committer | Luke Leighton <lkcl@samba.org> | 2000-04-05 04:29:37 +0000 |
commit | ab21ee9b46fe79d0aee75bad686162e1998b8e92 (patch) | |
tree | d2380da52bc144093024a44ea91ac6e5badc4d0b | |
parent | e1b34eb213f8843297d0e1e5a76ffa0352608c3b (diff) | |
download | samba-ab21ee9b46fe79d0aee75bad686162e1998b8e92.tar.gz |
tracking down setgroups failed problems, turns out that the order
of fn calls is probably something like this:
become_root()
become_root()
unbecome_root()
become_user()
unbecome_root()
which of course screws up the groups in current_user_saved....
-rw-r--r-- | source/lib/system.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/source/lib/system.c b/source/lib/system.c index 933b0c7a72b..3376272758c 100644 --- a/source/lib/system.c +++ b/source/lib/system.c @@ -637,7 +637,12 @@ int sys_getgroups(int setlen, gid_t *gidset) int sys_setgroups(int setlen, gid_t *gidset) { #if !defined(HAVE_BROKEN_GETGROUPS) - return setgroups(setlen, gidset); + BOOL ret = setgroups(setlen, gidset); + if (ret < 0) + { + DEBUG(10,("sys_setgroups failed: pid %d\n", getpid())); + } + return ret; #else GID_T *group_list; @@ -668,6 +673,8 @@ int sys_setgroups(int setlen, gid_t *gidset) int saved_errno = errno; free((char *)group_list); errno = saved_errno; + DEBUG(10,("sys_setgroups failed: pid %d\n", getpid())); + dbgflush(); return -1; } |