mirror of
https://github.com/samba-team/samba.git
synced 2025-02-10 13:57:47 +03:00
BUG 848: don't create winbind local users/groups that already exist in the tdb
(This used to be commit 89da3df07b7d90ad19852046d0533673cff8fdc6)
This commit is contained in:
parent
43dd09f9da
commit
e7efbb588a
@ -853,7 +853,7 @@ enum winbindd_result winbindd_create_user(struct winbindd_cli_state *state)
|
|||||||
{
|
{
|
||||||
char *user, *group;
|
char *user, *group;
|
||||||
unid_t id;
|
unid_t id;
|
||||||
WINBINDD_PW pw;
|
WINBINDD_PW pw, *pw_check;
|
||||||
WINBINDD_GR *wb_grp;
|
WINBINDD_GR *wb_grp;
|
||||||
struct group *unix_grp;
|
struct group *unix_grp;
|
||||||
gid_t primary_gid;
|
gid_t primary_gid;
|
||||||
@ -874,6 +874,13 @@ enum winbindd_result winbindd_create_user(struct winbindd_cli_state *state)
|
|||||||
|
|
||||||
DEBUG(3, ("[%5lu]: create_user: user=>(%s), group=>(%s)\n",
|
DEBUG(3, ("[%5lu]: create_user: user=>(%s), group=>(%s)\n",
|
||||||
(unsigned long)state->pid, user, group));
|
(unsigned long)state->pid, user, group));
|
||||||
|
|
||||||
|
if ( (pw_check=wb_getpwnam(user)) != NULL ) {
|
||||||
|
DEBUG(0,("winbindd_create_user: Refusing to create user that already exists (%s)\n",
|
||||||
|
user));
|
||||||
|
return WINBINDD_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if ( !*group )
|
if ( !*group )
|
||||||
group = lp_template_primary_group();
|
group = lp_template_primary_group();
|
||||||
@ -949,7 +956,7 @@ enum winbindd_result winbindd_create_group(struct winbindd_cli_state *state)
|
|||||||
{
|
{
|
||||||
char *group;
|
char *group;
|
||||||
unid_t id;
|
unid_t id;
|
||||||
WINBINDD_GR grp;
|
WINBINDD_GR grp, *grp_check;
|
||||||
uint32 flags = state->request.flags;
|
uint32 flags = state->request.flags;
|
||||||
uint32 rid;
|
uint32 rid;
|
||||||
|
|
||||||
@ -964,7 +971,13 @@ enum winbindd_result winbindd_create_group(struct winbindd_cli_state *state)
|
|||||||
|
|
||||||
DEBUG(3, ("[%5lu]: create_group: (%s)\n", (unsigned long)state->pid, group));
|
DEBUG(3, ("[%5lu]: create_group: (%s)\n", (unsigned long)state->pid, group));
|
||||||
|
|
||||||
/* get a new uid */
|
if ( (grp_check=wb_getgrnam(group)) != NULL ) {
|
||||||
|
DEBUG(0,("winbindd_create_group: Refusing to create group that already exists (%s)\n",
|
||||||
|
group));
|
||||||
|
return WINBINDD_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* get a new gid */
|
||||||
|
|
||||||
if ( !NT_STATUS_IS_OK(idmap_allocate_id( &id, ID_GROUPID)) ) {
|
if ( !NT_STATUS_IS_OK(idmap_allocate_id( &id, ID_GROUPID)) ) {
|
||||||
DEBUG(0,("winbindd_create_group: idmap_allocate_id() failed!\n"));
|
DEBUG(0,("winbindd_create_group: idmap_allocate_id() failed!\n"));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user