[SCM] Samba Shared Repository - branch v3-2-test updated -
release-3-2-0pre2-575-gc40522c
Günther Deschner
gd at samba.org
Mon Mar 31 22:28:14 GMT 2008
The branch, v3-2-test has been updated
via c40522cfe97c4e5eedccc9c56f47f9d4a8bcdaaf (commit)
via 8b4eac0ab186c02666693d3f007f0c98d60e0eda (commit)
via 776facabf6f09f643d6dc526aa83f8db517465f9 (commit)
via 3adf82554a6f54878aed99c3e894aef1b7ecfd84 (commit)
via da7f006539219f8ccd525ef1fcd131d5f9558bf1 (commit)
via b4d944e724f7ae2a97ba788b185aba7b7308b475 (commit)
via 1b6083449fbc2a252c046a0757c411be64e6b6c0 (commit)
via 29c42792567870f3dc23363f4357fecbec862937 (commit)
via 2fd90b62d7e61fa0c23f8f41e9f12fc16f29a8b1 (commit)
from fa5968a26b552d7f13574a826e506ed2d6630feb (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test
- Log -----------------------------------------------------------------
commit c40522cfe97c4e5eedccc9c56f47f9d4a8bcdaaf
Author: Günther Deschner <gd at samba.org>
Date: Tue Apr 1 00:14:00 2008 +0200
Fix build warning.
Guenther
commit 8b4eac0ab186c02666693d3f007f0c98d60e0eda
Author: Günther Deschner <gd at samba.org>
Date: Tue Apr 1 00:11:55 2008 +0200
Fix SRVSVC NetShareInfo level 502 client-side.
Guenther
commit 776facabf6f09f643d6dc526aa83f8db517465f9
Author: Günther Deschner <gd at samba.org>
Date: Tue Apr 1 00:02:48 2008 +0200
Fix SRVSVC ShareInfo level 502 server side handling.
Guenther
commit 3adf82554a6f54878aed99c3e894aef1b7ecfd84
Author: Günther Deschner <gd at samba.org>
Date: Mon Mar 31 23:55:16 2008 +0200
Re-run make idl.
Guenther
commit da7f006539219f8ccd525ef1fcd131d5f9558bf1
Author: Günther Deschner <gd at samba.org>
Date: Mon Mar 31 23:52:36 2008 +0200
Fix IDL for srvsvc_NetShareInfo502. It does indeed contain a sec_desc_buf.
Guenther
commit b4d944e724f7ae2a97ba788b185aba7b7308b475
Author: Günther Deschner <gd at samba.org>
Date: Mon Mar 31 23:51:34 2008 +0200
Fix SRVSVC ShareInfo max_users handling server side.
Guenther
commit 1b6083449fbc2a252c046a0757c411be64e6b6c0
Author: Günther Deschner <gd at samba.org>
Date: Mon Mar 31 23:47:26 2008 +0200
Re-run make idl.
Guenther
commit 29c42792567870f3dc23363f4357fecbec862937
Author: Günther Deschner <gd at samba.org>
Date: Mon Mar 31 23:45:26 2008 +0200
Use uint32 in max_users field in SRVSVC ShareInfo levels consistently.
Guenther
commit 2fd90b62d7e61fa0c23f8f41e9f12fc16f29a8b1
Author: Günther Deschner <gd at samba.org>
Date: Mon Mar 31 22:49:03 2008 +0200
Fix _srvsvc_NetShareSetInfo.
Guenther
-----------------------------------------------------------------------
Summary of changes:
source/librpc/gen_ndr/ndr_srvsvc.c | 54 +++++++----------------------------
source/librpc/gen_ndr/srvsvc.h | 7 ++--
source/librpc/idl/srvsvc.idl | 8 ++---
source/rpc_client/init_srvsvc.c | 10 ++----
source/rpc_server/srv_samr_nt.c | 2 +-
source/rpc_server/srv_srvsvc_nt.c | 30 +++++++++++--------
source/utils/net_rpc.c | 4 +-
7 files changed, 41 insertions(+), 74 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/librpc/gen_ndr/ndr_srvsvc.c b/source/librpc/gen_ndr/ndr_srvsvc.c
index fbf84ab..4e9e81a 100644
--- a/source/librpc/gen_ndr/ndr_srvsvc.c
+++ b/source/librpc/gen_ndr/ndr_srvsvc.c
@@ -4438,12 +4438,11 @@ static enum ndr_err_code ndr_push_srvsvc_NetShareInfo502(struct ndr_push *ndr, i
NDR_CHECK(ndr_push_srvsvc_ShareType(ndr, NDR_SCALARS, r->type));
NDR_CHECK(ndr_push_unique_ptr(ndr, r->comment));
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->permissions));
- NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->max_users));
+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->max_users));
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->current_users));
NDR_CHECK(ndr_push_unique_ptr(ndr, r->path));
NDR_CHECK(ndr_push_unique_ptr(ndr, r->password));
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown));
- NDR_CHECK(ndr_push_unique_ptr(ndr, r->sd));
+ NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sd_buf));
}
if (ndr_flags & NDR_BUFFERS) {
if (r->name) {
@@ -4470,14 +4469,7 @@ static enum ndr_err_code ndr_push_srvsvc_NetShareInfo502(struct ndr_push *ndr, i
NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->password, CH_UTF16)));
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->password, ndr_charset_length(r->password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
}
- if (r->sd) {
- {
- struct ndr_push *_ndr_sd;
- NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_sd, 4, -1));
- NDR_CHECK(ndr_push_security_descriptor(_ndr_sd, NDR_SCALARS|NDR_BUFFERS, r->sd));
- NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_sd, 4, -1));
- }
- }
+ NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sd_buf));
}
return NDR_ERR_SUCCESS;
}
@@ -4492,8 +4484,6 @@ static enum ndr_err_code ndr_pull_srvsvc_NetShareInfo502(struct ndr_pull *ndr, i
TALLOC_CTX *_mem_save_path_0;
uint32_t _ptr_password;
TALLOC_CTX *_mem_save_password_0;
- uint32_t _ptr_sd;
- TALLOC_CTX *_mem_save_sd_0;
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_pull_align(ndr, 4));
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
@@ -4510,7 +4500,7 @@ static enum ndr_err_code ndr_pull_srvsvc_NetShareInfo502(struct ndr_pull *ndr, i
r->comment = NULL;
}
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->permissions));
- NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->max_users));
+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->max_users));
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->current_users));
NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_path));
if (_ptr_path) {
@@ -4524,13 +4514,7 @@ static enum ndr_err_code ndr_pull_srvsvc_NetShareInfo502(struct ndr_pull *ndr, i
} else {
r->password = NULL;
}
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown));
- NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sd));
- if (_ptr_sd) {
- NDR_PULL_ALLOC(ndr, r->sd);
- } else {
- r->sd = NULL;
- }
+ NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sd_buf));
}
if (ndr_flags & NDR_BUFFERS) {
if (r->name) {
@@ -4581,17 +4565,7 @@ static enum ndr_err_code ndr_pull_srvsvc_NetShareInfo502(struct ndr_pull *ndr, i
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->password, ndr_get_array_length(ndr, &r->password), sizeof(uint16_t), CH_UTF16));
NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
}
- if (r->sd) {
- _mem_save_sd_0 = NDR_PULL_GET_MEM_CTX(ndr);
- NDR_PULL_SET_MEM_CTX(ndr, r->sd, 0);
- {
- struct ndr_pull *_ndr_sd;
- NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_sd, 4, -1));
- NDR_CHECK(ndr_pull_security_descriptor(_ndr_sd, NDR_SCALARS|NDR_BUFFERS, r->sd));
- NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_sd, 4, -1));
- }
- NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sd_0, 0);
- }
+ NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sd_buf));
}
return NDR_ERR_SUCCESS;
}
@@ -4614,7 +4588,7 @@ _PUBLIC_ void ndr_print_srvsvc_NetShareInfo502(struct ndr_print *ndr, const char
}
ndr->depth--;
ndr_print_uint32(ndr, "permissions", r->permissions);
- ndr_print_int32(ndr, "max_users", r->max_users);
+ ndr_print_uint32(ndr, "max_users", r->max_users);
ndr_print_uint32(ndr, "current_users", r->current_users);
ndr_print_ptr(ndr, "path", r->path);
ndr->depth++;
@@ -4628,13 +4602,7 @@ _PUBLIC_ void ndr_print_srvsvc_NetShareInfo502(struct ndr_print *ndr, const char
ndr_print_string(ndr, "password", r->password);
}
ndr->depth--;
- ndr_print_uint32(ndr, "unknown", r->unknown);
- ndr_print_ptr(ndr, "sd", r->sd);
- ndr->depth++;
- if (r->sd) {
- ndr_print_security_descriptor(ndr, "sd", r->sd);
- }
- ndr->depth--;
+ ndr_print_sec_desc_buf(ndr, "sd_buf", &r->sd_buf);
ndr->depth--;
}
@@ -5007,7 +4975,7 @@ static enum ndr_err_code ndr_push_srvsvc_NetShareInfo1006(struct ndr_push *ndr,
{
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_push_align(ndr, 4));
- NDR_CHECK(ndr_push_int32(ndr, NDR_SCALARS, r->max_users));
+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->max_users));
}
if (ndr_flags & NDR_BUFFERS) {
}
@@ -5018,7 +4986,7 @@ static enum ndr_err_code ndr_pull_srvsvc_NetShareInfo1006(struct ndr_pull *ndr,
{
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_pull_align(ndr, 4));
- NDR_CHECK(ndr_pull_int32(ndr, NDR_SCALARS, &r->max_users));
+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->max_users));
}
if (ndr_flags & NDR_BUFFERS) {
}
@@ -5029,7 +4997,7 @@ _PUBLIC_ void ndr_print_srvsvc_NetShareInfo1006(struct ndr_print *ndr, const cha
{
ndr_print_struct(ndr, name, "srvsvc_NetShareInfo1006");
ndr->depth++;
- ndr_print_int32(ndr, "max_users", r->max_users);
+ ndr_print_uint32(ndr, "max_users", r->max_users);
ndr->depth--;
}
diff --git a/source/librpc/gen_ndr/srvsvc.h b/source/librpc/gen_ndr/srvsvc.h
index f619dba..8a2bbfb 100644
--- a/source/librpc/gen_ndr/srvsvc.h
+++ b/source/librpc/gen_ndr/srvsvc.h
@@ -310,12 +310,11 @@ struct srvsvc_NetShareInfo502 {
enum srvsvc_ShareType type;
const char *comment;/* [unique,charset(UTF16)] */
uint32_t permissions;
- int32_t max_users;
+ uint32_t max_users;
uint32_t current_users;
const char *path;/* [unique,charset(UTF16)] */
const char *password;/* [unique,charset(UTF16)] */
- uint32_t unknown;
- struct security_descriptor *sd;/* [unique,subcontext(4)] */
+ struct sec_desc_buf sd_buf;
};
struct srvsvc_NetShareCtr502 {
@@ -346,7 +345,7 @@ struct srvsvc_NetShareCtr1005 {
};
struct srvsvc_NetShareInfo1006 {
- int32_t max_users;
+ uint32_t max_users;
};
struct srvsvc_NetShareCtr1006 {
diff --git a/source/librpc/idl/srvsvc.idl b/source/librpc/idl/srvsvc.idl
index 98a33e2..0bbd24a 100644
--- a/source/librpc/idl/srvsvc.idl
+++ b/source/librpc/idl/srvsvc.idl
@@ -463,13 +463,11 @@ import "security.idl", "svcctl.idl";
srvsvc_ShareType type;
[string,charset(UTF16)] uint16 *comment;
uint32 permissions;
- int32 max_users;
+ uint32 max_users;
uint32 current_users;
[string,charset(UTF16)] uint16 *path;
[string,charset(UTF16)] uint16 *password;
- /* maybe here is a struct sec_desc_buf following */
- uint32 unknown;
- [subcontext(4)] security_descriptor *sd;
+ sec_desc_buf sd_buf;
} srvsvc_NetShareInfo502;
typedef struct {
@@ -504,7 +502,7 @@ import "security.idl", "svcctl.idl";
} srvsvc_NetShareCtr1005;
typedef struct {
- int32 max_users;
+ uint32 max_users;
} srvsvc_NetShareInfo1006;
typedef struct {
diff --git a/source/rpc_client/init_srvsvc.c b/source/rpc_client/init_srvsvc.c
index 7b59568..24beb1a 100644
--- a/source/rpc_client/init_srvsvc.c
+++ b/source/rpc_client/init_srvsvc.c
@@ -158,12 +158,11 @@ void init_srvsvc_NetShareInfo502(struct srvsvc_NetShareInfo502 *r,
enum srvsvc_ShareType type,
const char *comment,
uint32_t permissions,
- int32_t max_users,
+ uint32_t max_users,
uint32_t current_users,
const char *path,
const char *password,
- uint32_t unknown,
- struct security_descriptor *sd)
+ struct sec_desc_buf *sd_buf)
{
r->name = name;
r->type = type;
@@ -173,8 +172,7 @@ void init_srvsvc_NetShareInfo502(struct srvsvc_NetShareInfo502 *r,
r->current_users = current_users;
r->path = path;
r->password = password;
- r->unknown = unknown;
- r->sd = sd;
+ r->sd_buf = *sd_buf;
}
/*******************************************************************
@@ -202,7 +200,7 @@ void init_srvsvc_NetShareInfo1005(struct srvsvc_NetShareInfo1005 *r,
********************************************************************/
void init_srvsvc_NetShareInfo1006(struct srvsvc_NetShareInfo1006 *r,
- int32_t max_users)
+ uint32_t max_users)
{
r->max_users = max_users;
}
diff --git a/source/rpc_server/srv_samr_nt.c b/source/rpc_server/srv_samr_nt.c
index 0f4a5b9..62632d0 100644
--- a/source/rpc_server/srv_samr_nt.c
+++ b/source/rpc_server/srv_samr_nt.c
@@ -2393,7 +2393,7 @@ static NTSTATUS get_user_info_20(TALLOC_CTX *mem_ctx,
samr_clear_sam_passwd(sampass);
DEBUG(3,("User:[%s] has [%s] (length: %d)\n", pdb_get_username(sampass),
- munged_dial, strlen(munged_dial)));
+ munged_dial, (int)strlen(munged_dial)));
if (munged_dial) {
blob = base64_decode_data_blob(munged_dial);
diff --git a/source/rpc_server/srv_srvsvc_nt.c b/source/rpc_server/srv_srvsvc_nt.c
index 8359511..7188360 100644
--- a/source/rpc_server/srv_srvsvc_nt.c
+++ b/source/rpc_server/srv_srvsvc_nt.c
@@ -291,7 +291,7 @@ static void init_srv_share_info_2(pipes_struct *p, struct srvsvc_NetShareInfo2 *
char *remark = NULL;
char *path = NULL;
int max_connections = lp_max_connections(snum);
- uint32 max_uses = max_connections!=0 ? max_connections : 0xffffffff;
+ uint32_t max_uses = max_connections!=0 ? max_connections : (uint32_t)-1;
int count = 0;
char *net_name = lp_servicename(snum);
@@ -379,6 +379,7 @@ static void init_srv_share_info_502(pipes_struct *p, struct srvsvc_NetShareInfo5
const char *net_name = lp_servicename(snum);
char *path = NULL;
SEC_DESC *sd = NULL;
+ struct sec_desc_buf *sd_buf = NULL;
size_t sd_size = 0;
TALLOC_CTX *ctx = p->mem_ctx;
char *remark = talloc_strdup(ctx, lp_comment(snum));;
@@ -397,16 +398,17 @@ static void init_srv_share_info_502(pipes_struct *p, struct srvsvc_NetShareInfo5
sd = get_share_security(ctx, lp_servicename(snum), &sd_size);
+ sd_buf = make_sec_desc_buf(p->mem_ctx, sd_size, sd);
+
init_srvsvc_NetShareInfo502(r, net_name,
get_share_type(snum),
remark ? remark : "",
0,
- 0xffffffff,
+ (uint32_t)-1,
1,
path ? path : "",
"",
- 0,
- sd);
+ sd_buf);
}
/***************************************************************************
@@ -447,7 +449,7 @@ static void init_srv_share_info_1005(pipes_struct *p, struct srvsvc_NetShareInfo
static void init_srv_share_info_1006(pipes_struct *p, struct srvsvc_NetShareInfo1006 *r, int snum)
{
- init_srvsvc_NetShareInfo1006(r, 0xffffffff);
+ init_srvsvc_NetShareInfo1006(r, (uint32_t)-1);
}
/***************************************************************************
@@ -1484,7 +1486,9 @@ WERROR _srvsvc_NetShareSetInfo(pipes_struct *p,
return WERR_NOMEM;
}
- *r->out.parm_error = 0;
+ if (r->out.parm_error) {
+ *r->out.parm_error = 0;
+ }
if ( strequal(share_name,"IPC$")
|| ( lp_enable_asu_support() && strequal(share_name,"ADMIN$") )
@@ -1515,15 +1519,15 @@ WERROR _srvsvc_NetShareSetInfo(pipes_struct *p,
switch (r->in.level) {
case 1:
pathname = talloc_strdup(ctx, lp_pathname(snum));
- comment = talloc_strdup(ctx, info->info2->comment);
- type = info->info2->type;
+ comment = talloc_strdup(ctx, info->info1->comment);
+ type = info->info1->type;
psd = NULL;
break;
case 2:
comment = talloc_strdup(ctx, info->info2->comment);
pathname = info->info2->path;
type = info->info2->type;
- max_connections = (info->info2->max_users == 0xffffffff) ?
+ max_connections = (info->info2->max_users == (uint32_t)-1) ?
0 : info->info2->max_users;
psd = NULL;
break;
@@ -1539,7 +1543,7 @@ WERROR _srvsvc_NetShareSetInfo(pipes_struct *p,
comment = talloc_strdup(ctx, info->info502->comment);
pathname = info->info502->path;
type = info->info502->type;
- psd = info->info502->sd;
+ psd = info->info502->sd_buf.sd;
map_generic_share_sd_bits(psd);
break;
case 1004:
@@ -1718,7 +1722,7 @@ WERROR _srvsvc_NetShareAdd(pipes_struct *p,
share_name = talloc_strdup(ctx, r->in.info->info2->name);
comment = talloc_strdup(ctx, r->in.info->info2->comment);
pathname = talloc_strdup(ctx, r->in.info->info2->path);
- max_connections = (r->in.info->info2->max_users == 0xffffffff) ?
+ max_connections = (r->in.info->info2->max_users == (uint32_t)-1) ?
0 : r->in.info->info2->max_users;
type = r->in.info->info2->type;
break;
@@ -1729,10 +1733,10 @@ WERROR _srvsvc_NetShareAdd(pipes_struct *p,
share_name = talloc_strdup(ctx, r->in.info->info502->name);
comment = talloc_strdup(ctx, r->in.info->info502->comment);
pathname = talloc_strdup(ctx, r->in.info->info502->path);
- max_connections = (r->in.info->info502->max_users == 0xffffffff) ?
+ max_connections = (r->in.info->info502->max_users == (uint32_t)-1) ?
0 : r->in.info->info502->max_users;
type = r->in.info->info502->type;
- psd = r->in.info->info502->sd;
+ psd = r->in.info->info502->sd_buf.sd;
map_generic_share_sd_bits(psd);
break;
diff --git a/source/utils/net_rpc.c b/source/utils/net_rpc.c
index 85a3f87..25c1f42 100644
--- a/source/utils/net_rpc.c
+++ b/source/utils/net_rpc.c
@@ -4044,7 +4044,7 @@ static NTSTATUS rpc_share_migrate_security_internals(const DOM_SID *domain_sid,
info502.name, info502.path, info502.comment);
if (opt_verbose)
- display_sec_desc(info502.sd);
+ display_sec_desc(info502.sd_buf.sd);
/* FIXME: shouldn't we be able to just set the security descriptor ? */
info.info502 = &info502;
@@ -4723,7 +4723,7 @@ static void show_userlist(struct rpc_pipe_client *pipe_hnd,
return;
}
- share_sd = info.info502->sd;
+ share_sd = info.info502->sd_buf.sd;
if (share_sd == NULL) {
DEBUG(1, ("Got no secdesc for share %s\n",
netname));
--
Samba Shared Repository
More information about the samba-cvs
mailing list