[SCM] Samba Shared Repository - branch v3-6-test updated
Günther Deschner
gd at samba.org
Tue Feb 1 06:00:04 MST 2011
The branch, v3-6-test has been updated
via a2eb55e s3-libnetapi: prefer dcerpc_samr_X functions in lib/netapi/user.c.
via da312fc s3-libnetapi: prefer dcerpc_samr_X functions in lib/netapi/samr.c.
via 7a22e9c s3-libnetapi: prefer dcerpc_samr_X functions in lib/netapi/localgroup.c.
via ba6c8f3 s3-libnetapi: prefer dcerpc_samr_X functions in lib/netapi/group.c.
from 95c1355 Ensure we send the direct levelII oplock break to the correct fid. (cherry picked from commit 24883229e3ec6237d28b88a2bacc812e1e98b931)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-6-test
- Log -----------------------------------------------------------------
commit a2eb55e2d060464146186e47a17ac8d2786a3fa3
Author: Günther Deschner <gd at samba.org>
Date: Fri Jan 14 17:05:32 2011 +0100
s3-libnetapi: prefer dcerpc_samr_X functions in lib/netapi/user.c.
Guenther
Autobuild-User: Günther Deschner <gd at samba.org>
Autobuild-Date: Tue Feb 1 13:41:42 CET 2011 on sn-devel-104
(cherry picked from commit f9af242886ac014baa3247bfdc1fe8be6cb8366e)
commit da312fc2f34e872315ad6866625260a43802f142
Author: Günther Deschner <gd at samba.org>
Date: Fri Jan 14 16:16:31 2011 +0100
s3-libnetapi: prefer dcerpc_samr_X functions in lib/netapi/samr.c.
Guenther
(cherry picked from commit 32fb4f5206bf754cecc761e5c2634f84a073e1eb)
commit 7a22e9cefb9fad9c5a4235fc972aa78084adf2de
Author: Günther Deschner <gd at samba.org>
Date: Fri Jan 14 16:11:19 2011 +0100
s3-libnetapi: prefer dcerpc_samr_X functions in lib/netapi/localgroup.c.
Guenther
(cherry picked from commit b76657f8d9fea54430b048e61ed7c8c78eb582e5)
commit ba6c8f36d0c7b4915bcfa319620ea54eab83702d
Author: Günther Deschner <gd at samba.org>
Date: Fri Jan 14 15:49:37 2011 +0100
s3-libnetapi: prefer dcerpc_samr_X functions in lib/netapi/group.c.
Guenther
(cherry picked from commit 7f6301811781675a7f8f5509e67fb34820a9806d)
-----------------------------------------------------------------------
Summary of changes:
source3/lib/netapi/group.c | 487 ++++++++++++++++++++++++++++---------
source3/lib/netapi/localgroup.c | 201 ++++++++++++----
source3/lib/netapi/samr.c | 62 ++++-
source3/lib/netapi/user.c | 507 +++++++++++++++++++++++++++++----------
4 files changed, 943 insertions(+), 314 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/lib/netapi/group.c b/source3/lib/netapi/group.c
index b9dd1e9..5507f71 100644
--- a/source3/lib/netapi/group.c
+++ b/source3/lib/netapi/group.c
@@ -23,7 +23,7 @@
#include "lib/netapi/netapi.h"
#include "lib/netapi/netapi_private.h"
#include "lib/netapi/libnetapi.h"
-#include "../librpc/gen_ndr/cli_samr.h"
+#include "../librpc/gen_ndr/ndr_samr_c.h"
#include "rpc_client/init_lsa.h"
#include "../libcli/security/security.h"
@@ -34,12 +34,13 @@ WERROR NetGroupAdd_r(struct libnetapi_ctx *ctx,
struct NetGroupAdd *r)
{
struct rpc_pipe_client *pipe_cli = NULL;
- NTSTATUS status;
+ NTSTATUS status, result;
WERROR werr;
struct policy_handle connect_handle, domain_handle, group_handle;
struct lsa_String lsa_group_name;
struct dom_sid2 *domain_sid = NULL;
uint32_t rid = 0;
+ struct dcerpc_binding_handle *b = NULL;
struct GROUP_INFO_0 *info0 = NULL;
struct GROUP_INFO_1 *info1 = NULL;
@@ -80,6 +81,8 @@ WERROR NetGroupAdd_r(struct libnetapi_ctx *ctx,
goto done;
}
+ b = pipe_cli->binding_handle;
+
werr = libnetapi_samr_open_domain(ctx, pipe_cli,
SAMR_ACCESS_ENUM_DOMAINS |
SAMR_ACCESS_LOOKUP_DOMAIN,
@@ -107,18 +110,23 @@ WERROR NetGroupAdd_r(struct libnetapi_ctx *ctx,
break;
}
- status = rpccli_samr_CreateDomainGroup(pipe_cli, talloc_tos(),
+ status = dcerpc_samr_CreateDomainGroup(b, talloc_tos(),
&domain_handle,
&lsa_group_name,
SEC_STD_DELETE |
SAMR_GROUP_ACCESS_SET_INFO,
&group_handle,
- &rid);
+ &rid,
+ &result);
if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto done;
}
+ if (!NT_STATUS_IS_OK(result)) {
+ werr = ntstatus_to_werror(result);
+ goto done;
+ }
switch (r->in.level) {
case 1:
@@ -126,10 +134,11 @@ WERROR NetGroupAdd_r(struct libnetapi_ctx *ctx,
init_lsa_String(&info.description,
info1->grpi1_comment);
- status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
+ status = dcerpc_samr_SetGroupInfo(b, talloc_tos(),
&group_handle,
GROUPINFODESCRIPTION,
- &info);
+ &info,
+ &result);
}
break;
case 2:
@@ -137,22 +146,28 @@ WERROR NetGroupAdd_r(struct libnetapi_ctx *ctx,
init_lsa_String(&info.description,
info2->grpi2_comment);
- status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
+ status = dcerpc_samr_SetGroupInfo(b, talloc_tos(),
&group_handle,
GROUPINFODESCRIPTION,
- &info);
+ &info,
+ &result);
if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto failed;
}
+ if (!NT_STATUS_IS_OK(result)) {
+ werr = ntstatus_to_werror(result);
+ goto failed;
+ }
}
if (info2->grpi2_attributes != 0) {
info.attributes.attributes = info2->grpi2_attributes;
- status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
+ status = dcerpc_samr_SetGroupInfo(b, talloc_tos(),
&group_handle,
GROUPINFOATTRIBUTES,
- &info);
+ &info,
+ &result);
}
break;
@@ -161,22 +176,28 @@ WERROR NetGroupAdd_r(struct libnetapi_ctx *ctx,
init_lsa_String(&info.description,
info3->grpi3_comment);
- status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
+ status = dcerpc_samr_SetGroupInfo(b, talloc_tos(),
&group_handle,
GROUPINFODESCRIPTION,
- &info);
+ &info,
+ &result);
if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto failed;
}
+ if (!NT_STATUS_IS_OK(result)) {
+ werr = ntstatus_to_werror(result);
+ goto failed;
+ }
}
if (info3->grpi3_attributes != 0) {
info.attributes.attributes = info3->grpi3_attributes;
- status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
+ status = dcerpc_samr_SetGroupInfo(b, talloc_tos(),
&group_handle,
GROUPINFOATTRIBUTES,
- &info);
+ &info,
+ &result);
}
break;
default:
@@ -187,17 +208,21 @@ WERROR NetGroupAdd_r(struct libnetapi_ctx *ctx,
werr = ntstatus_to_werror(status);
goto failed;
}
+ if (!NT_STATUS_IS_OK(result)) {
+ werr = ntstatus_to_werror(result);
+ goto failed;
+ }
werr = WERR_OK;
goto done;
failed:
- rpccli_samr_DeleteDomainGroup(pipe_cli, talloc_tos(),
- &group_handle);
+ dcerpc_samr_DeleteDomainGroup(b, talloc_tos(),
+ &group_handle, &result);
done:
if (is_valid_policy_hnd(&group_handle)) {
- rpccli_samr_Close(pipe_cli, talloc_tos(), &group_handle);
+ dcerpc_samr_Close(b, talloc_tos(), &group_handle, &result);
}
if (ctx->disable_policy_handle_cache) {
@@ -224,12 +249,13 @@ WERROR NetGroupDel_r(struct libnetapi_ctx *ctx,
struct NetGroupDel *r)
{
struct rpc_pipe_client *pipe_cli = NULL;
- NTSTATUS status;
+ NTSTATUS status, result;
WERROR werr;
struct policy_handle connect_handle, domain_handle, group_handle;
struct lsa_String lsa_group_name;
struct dom_sid2 *domain_sid = NULL;
int i = 0;
+ struct dcerpc_binding_handle *b = NULL;
struct samr_Ids rids;
struct samr_Ids types;
@@ -251,6 +277,8 @@ WERROR NetGroupDel_r(struct libnetapi_ctx *ctx,
goto done;
}
+ b = pipe_cli->binding_handle;
+
werr = libnetapi_samr_open_domain(ctx, pipe_cli,
SAMR_ACCESS_ENUM_DOMAINS |
SAMR_ACCESS_LOOKUP_DOMAIN,
@@ -264,23 +292,28 @@ WERROR NetGroupDel_r(struct libnetapi_ctx *ctx,
init_lsa_String(&lsa_group_name, r->in.group_name);
- status = rpccli_samr_LookupNames(pipe_cli, talloc_tos(),
+ status = dcerpc_samr_LookupNames(b, talloc_tos(),
&domain_handle,
1,
&lsa_group_name,
&rids,
- &types);
+ &types,
+ &result);
if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto done;
}
+ if (!NT_STATUS_IS_OK(result)) {
+ werr = ntstatus_to_werror(result);
+ goto done;
+ }
if (types.ids[0] != SID_NAME_DOM_GRP) {
werr = WERR_INVALID_DATATYPE;
goto done;
}
- status = rpccli_samr_OpenGroup(pipe_cli, talloc_tos(),
+ status = dcerpc_samr_OpenGroup(b, talloc_tos(),
&domain_handle,
SEC_STD_DELETE |
SAMR_GROUP_ACCESS_GET_MEMBERS |
@@ -288,20 +321,30 @@ WERROR NetGroupDel_r(struct libnetapi_ctx *ctx,
SAMR_GROUP_ACCESS_ADD_MEMBER |
SAMR_GROUP_ACCESS_LOOKUP_INFO,
rids.ids[0],
- &group_handle);
+ &group_handle,
+ &result);
if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto done;
}
+ if (!NT_STATUS_IS_OK(result)) {
+ werr = ntstatus_to_werror(result);
+ goto done;
+ }
- status = rpccli_samr_QueryGroupInfo(pipe_cli, talloc_tos(),
+ status = dcerpc_samr_QueryGroupInfo(b, talloc_tos(),
&group_handle,
GROUPINFOATTRIBUTES,
- &info);
+ &info,
+ &result);
if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto done;
}
+ if (!NT_STATUS_IS_OK(result)) {
+ werr = ntstatus_to_werror(result);
+ goto done;
+ }
#if 0
/* breaks against NT4 */
@@ -310,47 +353,67 @@ WERROR NetGroupDel_r(struct libnetapi_ctx *ctx,
goto done;
}
#endif
- status = rpccli_samr_QueryGroupMember(pipe_cli, talloc_tos(),
+ status = dcerpc_samr_QueryGroupMember(b, talloc_tos(),
&group_handle,
- &rid_array);
+ &rid_array,
+ &result);
if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto done;
}
+ if (!NT_STATUS_IS_OK(result)) {
+ werr = ntstatus_to_werror(result);
+ goto done;
+ }
{
struct lsa_Strings names;
struct samr_Ids member_types;
- status = rpccli_samr_LookupRids(pipe_cli, talloc_tos(),
+ status = dcerpc_samr_LookupRids(b, talloc_tos(),
&domain_handle,
rid_array->count,
rid_array->rids,
&names,
- &member_types);
+ &member_types,
+ &result);
if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto done;
}
+ if (!NT_STATUS_IS_OK(result)) {
+ werr = ntstatus_to_werror(result);
+ goto done;
+ }
}
for (i=0; i < rid_array->count; i++) {
- status = rpccli_samr_DeleteGroupMember(pipe_cli, talloc_tos(),
+ status = dcerpc_samr_DeleteGroupMember(b, talloc_tos(),
&group_handle,
- rid_array->rids[i]);
+ rid_array->rids[i],
+ &result);
if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto done;
}
+ if (!NT_STATUS_IS_OK(result)) {
+ werr = ntstatus_to_werror(result);
+ goto done;
+ }
}
- status = rpccli_samr_DeleteDomainGroup(pipe_cli, talloc_tos(),
- &group_handle);
+ status = dcerpc_samr_DeleteDomainGroup(b, talloc_tos(),
+ &group_handle,
+ &result);
if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto done;
}
+ if (!NT_STATUS_IS_OK(result)) {
+ werr = ntstatus_to_werror(result);
+ goto done;
+ }
ZERO_STRUCT(group_handle);
@@ -358,7 +421,7 @@ WERROR NetGroupDel_r(struct libnetapi_ctx *ctx,
done:
if (is_valid_policy_hnd(&group_handle)) {
- rpccli_samr_Close(pipe_cli, talloc_tos(), &group_handle);
+ dcerpc_samr_Close(b, talloc_tos(), &group_handle, &result);
}
if (ctx->disable_policy_handle_cache) {
@@ -385,11 +448,12 @@ WERROR NetGroupSetInfo_r(struct libnetapi_ctx *ctx,
struct NetGroupSetInfo *r)
{
struct rpc_pipe_client *pipe_cli = NULL;
- NTSTATUS status;
+ NTSTATUS status, result;
WERROR werr;
struct policy_handle connect_handle, domain_handle, group_handle;
struct lsa_String lsa_group_name;
struct dom_sid2 *domain_sid = NULL;
+ struct dcerpc_binding_handle *b = NULL;
struct samr_Ids rids;
struct samr_Ids types;
@@ -416,6 +480,8 @@ WERROR NetGroupSetInfo_r(struct libnetapi_ctx *ctx,
goto done;
}
+ b = pipe_cli->binding_handle;
+
werr = libnetapi_samr_open_domain(ctx, pipe_cli,
SAMR_ACCESS_ENUM_DOMAINS |
SAMR_ACCESS_LOOKUP_DOMAIN,
@@ -429,99 +495,127 @@ WERROR NetGroupSetInfo_r(struct libnetapi_ctx *ctx,
init_lsa_String(&lsa_group_name, r->in.group_name);
- status = rpccli_samr_LookupNames(pipe_cli, talloc_tos(),
+ status = dcerpc_samr_LookupNames(b, talloc_tos(),
&domain_handle,
1,
&lsa_group_name,
&rids,
- &types);
+ &types,
+ &result);
if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto done;
}
+ if (!NT_STATUS_IS_OK(result)) {
+ werr = ntstatus_to_werror(result);
+ goto done;
+ }
if (types.ids[0] != SID_NAME_DOM_GRP) {
werr = WERR_INVALID_DATATYPE;
goto done;
}
- status = rpccli_samr_OpenGroup(pipe_cli, talloc_tos(),
+ status = dcerpc_samr_OpenGroup(b, talloc_tos(),
&domain_handle,
SAMR_GROUP_ACCESS_SET_INFO |
SAMR_GROUP_ACCESS_LOOKUP_INFO,
rids.ids[0],
- &group_handle);
+ &group_handle,
+ &result);
if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto done;
}
+ if (!NT_STATUS_IS_OK(result)) {
+ werr = ntstatus_to_werror(result);
+ goto done;
+ }
switch (r->in.level) {
case 0:
g0 = (struct GROUP_INFO_0 *)r->in.buffer;
init_lsa_String(&info.name, g0->grpi0_name);
- status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
+ status = dcerpc_samr_SetGroupInfo(b, talloc_tos(),
&group_handle,
GROUPINFONAME,
- &info);
+ &info,
+ &result);
break;
case 1:
g1 = (struct GROUP_INFO_1 *)r->in.buffer;
init_lsa_String(&info.description, g1->grpi1_comment);
- status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
+ status = dcerpc_samr_SetGroupInfo(b, talloc_tos(),
&group_handle,
GROUPINFODESCRIPTION,
- &info);
+ &info,
+ &result);
break;
case 2:
g2 = (struct GROUP_INFO_2 *)r->in.buffer;
init_lsa_String(&info.description, g2->grpi2_comment);
- status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
+ status = dcerpc_samr_SetGroupInfo(b, talloc_tos(),
&group_handle,
GROUPINFODESCRIPTION,
- &info);
+ &info,
+ &result);
if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto done;
}
+ if (!NT_STATUS_IS_OK(result)) {
+ werr = ntstatus_to_werror(result);
+ goto done;
+ }
+
info.attributes.attributes = g2->grpi2_attributes;
- status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
+ status = dcerpc_samr_SetGroupInfo(b, talloc_tos(),
&group_handle,
GROUPINFOATTRIBUTES,
- &info);
+ &info,
+ &result);
break;
case 3:
g3 = (struct GROUP_INFO_3 *)r->in.buffer;
init_lsa_String(&info.description, g3->grpi3_comment);
- status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
+ status = dcerpc_samr_SetGroupInfo(b, talloc_tos(),
&group_handle,
GROUPINFODESCRIPTION,
- &info);
+ &info,
+ &result);
if (!NT_STATUS_IS_OK(status)) {
werr = ntstatus_to_werror(status);
goto done;
}
+ if (!NT_STATUS_IS_OK(result)) {
+ werr = ntstatus_to_werror(result);
+ goto done;
+ }
+
info.attributes.attributes = g3->grpi3_attributes;
- status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
+ status = dcerpc_samr_SetGroupInfo(b, talloc_tos(),
&group_handle,
GROUPINFOATTRIBUTES,
- &info);
+ &info,
+ &result);
break;
case 1002:
g1002 = (struct GROUP_INFO_1002 *)r->in.buffer;
init_lsa_String(&info.description, g1002->grpi1002_comment);
- status = rpccli_samr_SetGroupInfo(pipe_cli, talloc_tos(),
+ status = dcerpc_samr_SetGroupInfo(b, talloc_tos(),
&group_handle,
GROUPINFODESCRIPTION,
- &info);
+ &info,
+ &result);
--
Samba Shared Repository
More information about the samba-cvs
mailing list