summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Leighton <lkcl@samba.org>2000-04-05 04:29:37 +0000
committerLuke Leighton <lkcl@samba.org>2000-04-05 04:29:37 +0000
commitab21ee9b46fe79d0aee75bad686162e1998b8e92 (patch)
treed2380da52bc144093024a44ea91ac6e5badc4d0b
parente1b34eb213f8843297d0e1e5a76ffa0352608c3b (diff)
downloadsamba-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.c9
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;
}