The branch, v3-2-test has been updated via dcc40a6adec5d00c29a062164cbc68ff4a7779f8 (commit) via 02bc790f209f56cc704566ded46973efc35f4a4f (commit) via 0f6a80fb198f3cc4ffc875c77da3ff3d8b8c5ca3 (commit) from 71de4d58bb2aea6a98e94055387ef6671aa64410 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test - Log ----------------------------------------------------------------- commit dcc40a6adec5d00c29a062164cbc68ff4a7779f8 Author: Günther Deschner <[EMAIL PROTECTED]> Date: Thu Oct 23 03:31:32 2008 +0200 s3-samr-server: unify callback convention: _samr_UserSetInfo. Guenther (cherry picked from commit aa301e82d0c44c6a733e8be2546d661ea56512ef) commit 02bc790f209f56cc704566ded46973efc35f4a4f Author: Günther Deschner <[EMAIL PROTECTED]> Date: Thu Oct 23 03:30:58 2008 +0200 s3-samr-server: unify callback convention: _samr_QueryDomainInfo. Guenther (cherry picked from commit ac2c35bc379de83091644455dbeba0bea3e5ceb6) commit 0f6a80fb198f3cc4ffc875c77da3ff3d8b8c5ca3 Author: Günther Deschner <[EMAIL PROTECTED]> Date: Thu Oct 23 03:30:14 2008 +0200 s3-samr-server: fix return code in _samr_QueryDisplayInformation. Guenther (cherry picked from commit 30fa6c3ba19a8f816043405ba5d9eec84dd1c97b) ----------------------------------------------------------------------- Summary of changes: source/rpc_server/srv_samr_nt.c | 105 ++++++++++++++------------------------- 1 files changed, 38 insertions(+), 67 deletions(-) Changeset truncated at 500 lines: diff --git a/source/rpc_server/srv_samr_nt.c b/source/rpc_server/srv_samr_nt.c index ac3cdfa..a24fb32 100644 --- a/source/rpc_server/srv_samr_nt.c +++ b/source/rpc_server/srv_samr_nt.c @@ -1648,7 +1648,7 @@ NTSTATUS _samr_QueryDisplayInfo(pipes_struct *p, /* calculate the total size */ total_data_size=num_account*struct_size; - if (num_account) { + if (max_entries <= num_account) { status = STATUS_MORE_ENTRIES; } else { status = NT_STATUS_OK; @@ -2911,14 +2911,11 @@ NTSTATUS _samr_GetGroupsForUser(pipes_struct *p, } /******************************************************************* - samr_QueryDomainInfo_internal + _samr_QueryDomainInfo ********************************************************************/ -static NTSTATUS samr_QueryDomainInfo_internal(const char *fn_name, - pipes_struct *p, - struct policy_handle *handle, - uint32_t level, - union samr_DomainInfo **dom_info_ptr) +NTSTATUS _samr_QueryDomainInfo(pipes_struct *p, + struct samr_QueryDomainInfo *r) { NTSTATUS status = NT_STATUS_OK; struct samr_info *info = NULL; @@ -2940,28 +2937,26 @@ static NTSTATUS samr_QueryDomainInfo_internal(const char *fn_name, uint32 num_users=0, num_groups=0, num_aliases=0; - DEBUG(5,("%s: %d\n", fn_name, __LINE__)); + DEBUG(5,("_samr_QueryDomainInfo: %d\n", __LINE__)); dom_info = TALLOC_ZERO_P(p->mem_ctx, union samr_DomainInfo); if (!dom_info) { return NT_STATUS_NO_MEMORY; } - *dom_info_ptr = dom_info; - /* find the policy handle. open a policy on it. */ - if (!find_policy_by_hnd(p, handle, (void **)(void *)&info)) { + if (!find_policy_by_hnd(p, r->in.domain_handle, (void **)(void *)&info)) { return NT_STATUS_INVALID_HANDLE; } status = access_check_samr_function(info->acc_granted, SA_RIGHT_SAM_OPEN_DOMAIN, - "_samr_QueryDomainInfo_internal" ); + "_samr_QueryDomainInfo" ); if ( !NT_STATUS_IS_OK(status) ) return status; - switch (level) { + switch (r->in.level) { case 0x01: become_root(); @@ -3137,23 +3132,11 @@ static NTSTATUS samr_QueryDomainInfo_internal(const char *fn_name, return NT_STATUS_INVALID_INFO_CLASS; } - DEBUG(5,("%s: %d\n", fn_name, __LINE__)); - - return status; -} + *r->out.info = dom_info; -/******************************************************************* - _samr_QueryDomainInfo - ********************************************************************/ + DEBUG(5,("_samr_QueryDomainInfo: %d\n", __LINE__)); -NTSTATUS _samr_QueryDomainInfo(pipes_struct *p, - struct samr_QueryDomainInfo *r) -{ - return samr_QueryDomainInfo_internal("_samr_QueryDomainInfo", - p, - r->in.domain_handle, - r->in.level, - r->out.info); + return status; } /* W2k3 seems to use the same check for all 3 objects that can be created via @@ -4158,20 +4141,18 @@ static NTSTATUS set_user_info_25(TALLOC_CTX *mem_ctx, } /******************************************************************* - samr_SetUserInfo_internal + samr_SetUserInfo ********************************************************************/ -static NTSTATUS samr_SetUserInfo_internal(const char *fn_name, - pipes_struct *p, - struct policy_handle *user_handle, - uint16_t level, - union samr_UserInfo *info) +NTSTATUS _samr_SetUserInfo(pipes_struct *p, + struct samr_SetUserInfo *r) { NTSTATUS status; struct samu *pwd = NULL; DOM_SID sid; - POLICY_HND *pol = user_handle; - uint16_t switch_value = level; + POLICY_HND *pol = r->in.user_handle; + union samr_UserInfo *info = r->in.info; + uint16_t switch_value = r->in.level; uint32_t acc_granted; uint32_t acc_required; bool ret; @@ -4179,7 +4160,7 @@ static NTSTATUS samr_SetUserInfo_internal(const char *fn_name, uint32_t acb_info; DISP_INFO *disp_info = NULL; - DEBUG(5,("%s: %d\n", fn_name, __LINE__)); + DEBUG(5,("_samr_SetUserInfo: %d\n", __LINE__)); /* find the policy handle. open a policy on it. */ if (!get_lsa_policy_samr_sid(p, pol, &sid, &acc_granted, &disp_info)) { @@ -4209,16 +4190,16 @@ static NTSTATUS samr_SetUserInfo_internal(const char *fn_name, status = access_check_samr_function(acc_granted, acc_required, - fn_name); + "_samr_SetUserInfo"); if (!NT_STATUS_IS_OK(status)) { return status; } - DEBUG(5, ("%s: sid:%s, level:%d\n", - fn_name, sid_string_dbg(&sid), switch_value)); + DEBUG(5, ("_samr_SetUserInfo: sid:%s, level:%d\n", + sid_string_dbg(&sid), switch_value)); if (info == NULL) { - DEBUG(5, ("%s: NULL info level\n", fn_name)); + DEBUG(5, ("_samr_SetUserInfo: NULL info level\n")); return NT_STATUS_INVALID_INFO_CLASS; } @@ -4252,8 +4233,7 @@ static NTSTATUS samr_SetUserInfo_internal(const char *fn_name, } } - DEBUG(5, ("%s: %s does%s possess sufficient rights\n", - fn_name, + DEBUG(5, ("_samr_SetUserInfo: %s does%s possess sufficient rights\n", uidtoname(p->pipe_user.ut.uid), has_enough_rights ? "" : " not")); @@ -4380,31 +4360,19 @@ static NTSTATUS samr_SetUserInfo_internal(const char *fn_name, } /******************************************************************* - _samr_SetUserInfo - ********************************************************************/ - -NTSTATUS _samr_SetUserInfo(pipes_struct *p, - struct samr_SetUserInfo *r) -{ - return samr_SetUserInfo_internal("_samr_SetUserInfo", - p, - r->in.user_handle, - r->in.level, - r->in.info); -} - -/******************************************************************* _samr_SetUserInfo2 ********************************************************************/ NTSTATUS _samr_SetUserInfo2(pipes_struct *p, struct samr_SetUserInfo2 *r) { - return samr_SetUserInfo_internal("_samr_SetUserInfo2", - p, - r->in.user_handle, - r->in.level, - r->in.info); + struct samr_SetUserInfo q; + + q.in.user_handle = r->in.user_handle; + q.in.level = r->in.level; + q.in.info = r->in.info; + + return _samr_SetUserInfo(p, &q); } /********************************************************************* @@ -5681,11 +5649,14 @@ NTSTATUS _samr_RemoveMemberFromForeignDomain(pipes_struct *p, NTSTATUS _samr_QueryDomainInfo2(pipes_struct *p, struct samr_QueryDomainInfo2 *r) { - return samr_QueryDomainInfo_internal("_samr_QueryDomainInfo2", - p, - r->in.domain_handle, - r->in.level, - r->out.info); + struct samr_QueryDomainInfo q; + + q.in.domain_handle = r->in.domain_handle; + q.in.level = r->in.level; + + q.out.info = r->out.info; + + return _samr_QueryDomainInfo(p, &q); } /******************************************************************* -- Samba Shared Repository