diff options
author | Jeremy Allison <jra@samba.org> | 2003-05-16 18:30:19 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2003-05-16 18:30:19 +0000 |
commit | de7cd07a29f3ce696d703f1a9c718f05bd8de4cc (patch) | |
tree | 25e786bb02b6b16a9818ce87aa58ef3b14c52528 /source3/rpc_server/srv_samr_nt.c | |
parent | f93f79d6ed353801b1761af2fa54dfe49022d426 (diff) | |
download | samba-de7cd07a29f3ce696d703f1a9c718f05bd8de4cc.tar.gz samba-de7cd07a29f3ce696d703f1a9c718f05bd8de4cc.tar.bz2 samba-de7cd07a29f3ce696d703f1a9c718f05bd8de4cc.zip |
Patch from "Esh, Andrew" <Andrew_Esh@adaptec.com> to fix core dump bug
in add groupmem code.
Jeremy.
(This used to be commit 7e7077e9e363f46cea93767f0463581dbec87063)
Diffstat (limited to 'source3/rpc_server/srv_samr_nt.c')
-rw-r--r-- | source3/rpc_server/srv_samr_nt.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/source3/rpc_server/srv_samr_nt.c b/source3/rpc_server/srv_samr_nt.c index 0f7f6fc9df..fc29df3976 100644 --- a/source3/rpc_server/srv_samr_nt.c +++ b/source3/rpc_server/srv_samr_nt.c @@ -3512,6 +3512,7 @@ NTSTATUS _samr_add_groupmem(pipes_struct *p, SAMR_Q_ADD_GROUPMEM *q_u, SAMR_R_AD DOM_SID group_sid; DOM_SID user_sid; fstring group_sid_str; + uid_t uid; struct passwd *pwd; struct group *grp; fstring grp_name; @@ -3553,7 +3554,19 @@ NTSTATUS _samr_add_groupmem(pipes_struct *p, SAMR_Q_ADD_GROUPMEM *q_u, SAMR_R_AD pdb_free_sam(&sam_user); return NT_STATUS_NO_SUCH_USER; } - + + /* check a real user exist before we run the script to add a user to a group */ + if (NT_STATUS_IS_ERR(sid_to_uid(pdb_get_user_sid(sam_user), &uid))) { + pdb_free_sam(&sam_user); + return NT_STATUS_NO_SUCH_USER; + } + + pdb_free_sam(&sam_user); + + if ((pwd=getpwuid_alloc(uid)) == NULL) { + return NT_STATUS_NO_SUCH_USER; + } + if ((grp=getgrgid(map.gid)) == NULL) { passwd_free(&pwd); return NT_STATUS_NO_SUCH_GROUP; |