summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorLuke Leighton <lkcl@samba.org>1998-12-03 17:41:14 +0000
committerLuke Leighton <lkcl@samba.org>1998-12-03 17:41:14 +0000
commitf3787515d67b80a91786cfdd2fd2fb5972b4b094 (patch)
treed2eba077da9ad5218d817d20f35de9a4cebcdbd2 /source3
parent8d08fb732349e50d287aa864fbf57ecc51b55562 (diff)
downloadsamba-f3787515d67b80a91786cfdd2fd2fb5972b4b094.tar.gz
samba-f3787515d67b80a91786cfdd2fd2fb5972b4b094.tar.bz2
samba-f3787515d67b80a91786cfdd2fd2fb5972b4b094.zip
moved get_unixgroups it will be needed by the unix instance of the group
DB API (This used to be commit ef58e48bc9af338ed6c734205d4faf82371284ac)
Diffstat (limited to 'source3')
-rw-r--r--source3/include/proto.h2
-rw-r--r--source3/lib/util.c49
-rw-r--r--source3/smbd/password.c49
3 files changed, 50 insertions, 50 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h
index c1f46da32d..fb4a9b75ea 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -400,6 +400,7 @@ void standard_sub(connection_struct *conn,char *str);
BOOL same_net(struct in_addr ip1,struct in_addr ip2,struct in_addr mask);
struct hostent *Get_Hostbyname(const char *name);
BOOL process_exists(int pid);
+int get_unixgroups(char *user, uid_t uid, gid_t gid, int *p_ngroups, gid_t **p_groups);
char *uidtoname(uid_t uid);
char *gidtoname(gid_t gid);
BOOL nametogid(const char *name, gid_t *gid);
@@ -2739,7 +2740,6 @@ BOOL set_challenge(unsigned char *challenge);
user_struct *get_valid_user_struct(uint16 vuid);
void invalidate_vuid(uint16 vuid);
char *validated_username(uint16 vuid);
-int get_unixgroups(char *user, uid_t uid, gid_t gid, int *p_ngroups, gid_t **p_groups);
uint16 register_vuid(uid_t uid,gid_t gid, char *unix_name, char *requested_name, BOOL guest);
void add_session_user(char *user);
BOOL smb_password_check(char *password, unsigned char *part_passwd, unsigned char *c8);
diff --git a/source3/lib/util.c b/source3/lib/util.c
index 98c840efce..dc11c7789c 100644
--- a/source3/lib/util.c
+++ b/source3/lib/util.c
@@ -2321,6 +2321,55 @@ BOOL process_exists(int pid)
}
+/****************************************************************************
+Setup the groups a user belongs to.
+****************************************************************************/
+int get_unixgroups(char *user, uid_t uid, gid_t gid, int *p_ngroups, gid_t **p_groups)
+{
+ int i,ngroups;
+ gid_t grp = 0;
+ gid_t *groups = NULL;
+
+ if (-1 == initgroups(user,gid))
+ {
+ if (getuid() == 0)
+ {
+ DEBUG(0,("Unable to initgroups!\n"));
+ if (gid < 0 || gid > 16000 || uid < 0 || uid > 16000)
+ {
+ DEBUG(0,("This is probably a problem with the account %s\n", user));
+ }
+ }
+ return -1;
+ }
+
+ ngroups = sys_getgroups(0,&grp);
+ if (ngroups <= 0)
+ {
+ ngroups = 32;
+ }
+
+ if((groups = (gid_t *)malloc(sizeof(gid_t)*ngroups)) == NULL)
+ {
+ DEBUG(0,("get_unixgroups malloc fail !\n"));
+ return -1;
+ }
+
+ ngroups = sys_getgroups(ngroups,groups);
+
+ (*p_ngroups) = ngroups;
+ (*p_groups) = groups;
+
+ DEBUG( 3, ( "%s is in %d groups: ", user, ngroups ) );
+ for (i = 0; i < ngroups; i++ )
+ {
+ DEBUG( 3, ( "%s%d", (i ? ", " : ""), (int)groups[i] ) );
+ }
+ DEBUG( 3, ( "\n" ) );
+
+ return 0;
+}
+
/*******************************************************************
turn a uid into a user name
********************************************************************/
diff --git a/source3/smbd/password.c b/source3/smbd/password.c
index ed47e6d3e5..8718e75c3b 100644
--- a/source3/smbd/password.c
+++ b/source3/smbd/password.c
@@ -150,55 +150,6 @@ char *validated_username(uint16 vuid)
}
-/****************************************************************************
-Setup the groups a user belongs to.
-****************************************************************************/
-int get_unixgroups(char *user, uid_t uid, gid_t gid, int *p_ngroups, gid_t **p_groups)
-{
- int i,ngroups;
- gid_t grp = 0;
- gid_t *groups = NULL;
-
- if (-1 == initgroups(user,gid))
- {
- if (getuid() == 0)
- {
- DEBUG(0,("Unable to initgroups!\n"));
- if (gid < 0 || gid > 16000 || uid < 0 || uid > 16000)
- {
- DEBUG(0,("This is probably a problem with the account %s\n", user));
- }
- }
- return -1;
- }
-
- ngroups = sys_getgroups(0,&grp);
- if (ngroups <= 0)
- {
- ngroups = 32;
- }
-
- if((groups = (gid_t *)malloc(sizeof(gid_t)*ngroups)) == NULL)
- {
- DEBUG(0,("get_unixgroups malloc fail !\n"));
- return -1;
- }
-
- ngroups = sys_getgroups(ngroups,groups);
-
- (*p_ngroups) = ngroups;
- (*p_groups) = groups;
-
- DEBUG( 3, ( "%s is in %d groups: ", user, ngroups ) );
- for (i = 0; i < ngroups; i++ )
- {
- DEBUG( 3, ( "%s%d", (i ? ", " : ""), (int)groups[i] ) );
- }
- DEBUG( 3, ( "\n" ) );
-
- return 0;
-}
-
/****************************************************************************
register a uid/name pair as being valid and that a valid password