[SCM] Samba Shared Repository - branch v3-2-test updated - release-3-2-0pre2-164-g776e210

Günther Deschner gd at samba.org
Sat Mar 8 22:22:32 GMT 2008


The branch, v3-2-test has been updated
       via  776e21075b31db605e45f91b6ccefd11412d7773 (commit)
       via  8b016efeb0bb4cd5d91928952a258fce1b6f97d0 (commit)
       via  64a121c147c825259a06a8cd8de85ec31dd5b4a4 (commit)
      from  8c2c17573c179c774d093d780716e95833cb992f (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit 776e21075b31db605e45f91b6ccefd11412d7773
Author: Günther Deschner <gd at samba.org>
Date:   Sat Mar 8 01:02:54 2008 +0100

    Remove unused marshalling for SRV_NET_FILE_SET_SECDESC and SRV_R_NET_FILE_GET_SECDESC.
    
    Guenther

commit 8b016efeb0bb4cd5d91928952a258fce1b6f97d0
Author: Günther Deschner <gd at samba.org>
Date:   Sat Mar 8 00:57:52 2008 +0100

    Use pidl for _srvsvc_NetGetFileSecurity.
    
    Guenther

commit 64a121c147c825259a06a8cd8de85ec31dd5b4a4
Author: Günther Deschner <gd at samba.org>
Date:   Sat Mar 8 00:42:40 2008 +0100

    Use pidl for _srvsvc_NetSetFileSecurity.
    
    Guenther

-----------------------------------------------------------------------

Summary of changes:
 source/include/rpc_srvsvc.h       |   46 ----------
 source/rpc_parse/parse_srv.c      |  165 -------------------------------------
 source/rpc_server/srv_srvsvc.c    |   46 +----------
 source/rpc_server/srv_srvsvc_nt.c |  120 ++++++++++++++-------------
 4 files changed, 64 insertions(+), 313 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/include/rpc_srvsvc.h b/source/include/rpc_srvsvc.h
index 3ea55bd..60ad23e 100644
--- a/source/include/rpc_srvsvc.h
+++ b/source/include/rpc_srvsvc.h
@@ -652,50 +652,4 @@ typedef struct {
 	WERROR status;      
 } SRV_R_NET_FILE_ENUM;
 
-/* SRV_Q_NET_FILE_QUERY_SECDESC */
-typedef struct q_net_file_query_secdesc
-{
-	uint32  ptr_srv_name;
-	UNISTR2 uni_srv_name;
-	uint32  ptr_qual_name;
-	UNISTR2 uni_qual_name;
-	UNISTR2 uni_file_name;
-	uint32  unknown1;
-	uint32  unknown2;
-	uint32  unknown3;
-} SRV_Q_NET_FILE_QUERY_SECDESC;
-
-/* SRV_R_NET_FILE_QUERY_SECDESC */
-typedef struct r_net_file_query_secdesc
-{
-	uint32 ptr_response;
-	uint32 size_response;
-	uint32 ptr_secdesc;
-	uint32 size_secdesc;
-	SEC_DESC *sec_desc;
-	WERROR status;
-} SRV_R_NET_FILE_QUERY_SECDESC;
-
-/* SRV_Q_NET_FILE_SET_SECDESC */
-typedef struct q_net_file_set_secdesc
-{
-	uint32  ptr_srv_name;
-	UNISTR2 uni_srv_name;
-	uint32  ptr_qual_name;
-	UNISTR2 uni_qual_name;
-	UNISTR2 uni_file_name;
-	uint32  sec_info;
-	uint32  size_set;
-	uint32  ptr_secdesc;
-	uint32  size_secdesc;
-	SEC_DESC *sec_desc;
-} SRV_Q_NET_FILE_SET_SECDESC;
-
-/* SRV_R_NET_FILE_SET_SECDESC */
-typedef struct r_net_file_set_secdesc
-{
-	WERROR status;
-} SRV_R_NET_FILE_SET_SECDESC;
-
-
 #endif /* _RPC_SRVSVC_H */
diff --git a/source/rpc_parse/parse_srv.c b/source/rpc_parse/parse_srv.c
index b4cc087..9e42ef6 100644
--- a/source/rpc_parse/parse_srv.c
+++ b/source/rpc_parse/parse_srv.c
@@ -2692,168 +2692,3 @@ bool srv_io_r_net_disk_enum(const char *desc, SRV_R_NET_DISK_ENUM *r_n, prs_stru
 
 	return True;
 }
-
-/*******************************************************************
- Reads or writes a structure.
-********************************************************************/
-
-bool srv_io_q_net_file_query_secdesc(const char *desc, SRV_Q_NET_FILE_QUERY_SECDESC *q_n, prs_struct *ps, int depth)
-{
-	if (q_n == NULL)
-		return False;
-
-	prs_debug(ps, depth, desc, "srv_io_q_net_file_query_secdesc");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!prs_uint32("ptr_srv_name", ps, depth, &q_n->ptr_srv_name))
-		return False;
-
-	if(!smb_io_unistr2("", &q_n->uni_srv_name, True, ps, depth))
-		return False;
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!prs_uint32("ptr_qual_name", ps, depth, &q_n->ptr_qual_name))
-		return False;
-
-	if(!smb_io_unistr2("", &q_n->uni_qual_name, True, ps, depth))
-		return False;
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!smb_io_unistr2("", &q_n->uni_file_name, True, ps, depth))
-		return False;
-
-	if(!prs_uint32("unknown1", ps, depth, &q_n->unknown1))
-		return False;
-
-	if(!prs_uint32("unknown2", ps, depth, &q_n->unknown2))
-		return False;
-
-	if(!prs_uint32("unknown3", ps, depth, &q_n->unknown3))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
- Reads or writes a structure.
-********************************************************************/
-
-bool srv_io_r_net_file_query_secdesc(const char *desc, SRV_R_NET_FILE_QUERY_SECDESC *r_n, prs_struct *ps, int depth)
-{
-	if (r_n == NULL)
-		return False;
-
-	prs_debug(ps, depth, desc, "srv_io_r_net_file_query_secdesc");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!prs_uint32("ptr_response", ps, depth, &r_n->ptr_response))
-		return False;
-
-	if(!prs_uint32("size_response", ps, depth, &r_n->size_response))
-		return False;
-
-	if(!prs_uint32("ptr_secdesc", ps, depth, &r_n->ptr_secdesc))
-		return False;
-
-	if(!prs_uint32("size_secdesc", ps, depth, &r_n->size_secdesc))
-		return False;
-
-	if(!sec_io_desc("sec_desc", &r_n->sec_desc, ps, depth))
-		return False;
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!prs_werror("status", ps, depth, &r_n->status))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
- Reads or writes a structure.
-********************************************************************/
-
-bool srv_io_q_net_file_set_secdesc(const char *desc, SRV_Q_NET_FILE_SET_SECDESC *q_n, prs_struct *ps, int depth)
-{
-	if (q_n == NULL)
-		return False;
-
-	prs_debug(ps, depth, desc, "srv_io_q_net_file_set_secdesc");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!prs_uint32("ptr_srv_name", ps, depth, &q_n->ptr_srv_name))
-		return False;
-
-	if(!smb_io_unistr2("", &q_n->uni_srv_name, True, ps, depth))
-		return False;
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!prs_uint32("ptr_qual_name", ps, depth, &q_n->ptr_qual_name))
-		return False;
-
-	if(!smb_io_unistr2("", &q_n->uni_qual_name, True, ps, depth))
-		return False;
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!smb_io_unistr2("", &q_n->uni_file_name, True, ps, depth))
-		return False;
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!prs_uint32("sec_info", ps, depth, &q_n->sec_info))
-		return False;
-
-	if(!prs_uint32("size_set", ps, depth, &q_n->size_set))
-		return False;
-
-	if(!prs_uint32("ptr_secdesc", ps, depth, &q_n->ptr_secdesc))
-		return False;
-
-	if(!prs_uint32("size_secdesc", ps, depth, &q_n->size_secdesc))
-		return False;
-
-	if(!sec_io_desc("sec_desc", &q_n->sec_desc, ps, depth))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
- Reads or writes a structure.
-********************************************************************/
-
-bool srv_io_r_net_file_set_secdesc(const char *desc, SRV_R_NET_FILE_SET_SECDESC *r_n, prs_struct *ps, int depth)
-{
-	if (r_n == NULL)
-		return False;
-
-	prs_debug(ps, depth, desc, "srv_io_r_net_file_set_secdesc");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!prs_werror("status", ps, depth, &r_n->status))
-		return False;
-
-	return True;
-}
diff --git a/source/rpc_server/srv_srvsvc.c b/source/rpc_server/srv_srvsvc.c
index 1873bcb..5351f93 100644
--- a/source/rpc_server/srv_srvsvc.c
+++ b/source/rpc_server/srv_srvsvc.c
@@ -291,28 +291,7 @@ static bool api_srv_net_name_validate(pipes_struct *p)
 
 static bool api_srv_net_file_query_secdesc(pipes_struct *p)
 {
-	SRV_Q_NET_FILE_QUERY_SECDESC q_u;
-	SRV_R_NET_FILE_QUERY_SECDESC r_u;
-	prs_struct *data = &p->in_data.data;
-	prs_struct *rdata = &p->out_data.rdata;
-
-	ZERO_STRUCT(q_u);
-	ZERO_STRUCT(r_u);
-
-	/* Unmarshall the net file get info from Win9x */
-	if(!srv_io_q_net_file_query_secdesc("", &q_u, data, 0)) {
-		DEBUG(0,("api_srv_net_file_query_secdesc: Failed to unmarshall SRV_Q_NET_FILE_QUERY_SECDESC.\n"));
-		return False;
-	}
-
-	r_u.status = _srv_net_file_query_secdesc(p, &q_u, &r_u);
-
-	if(!srv_io_r_net_file_query_secdesc("", &r_u, rdata, 0)) {
-		DEBUG(0,("api_srv_net_file_query_secdesc: Failed to marshall SRV_R_NET_FILE_QUERY_SECDESC.\n"));
-		return False;
-	}
-
-	return True;
+	return proxy_srvsvc_call(p, NDR_SRVSVC_NETGETFILESECURITY);
 }
 
 /*******************************************************************
@@ -321,28 +300,7 @@ static bool api_srv_net_file_query_secdesc(pipes_struct *p)
 
 static bool api_srv_net_file_set_secdesc(pipes_struct *p)
 {
-	SRV_Q_NET_FILE_SET_SECDESC q_u;
-	SRV_R_NET_FILE_SET_SECDESC r_u;
-	prs_struct *data = &p->in_data.data;
-	prs_struct *rdata = &p->out_data.rdata;
-
-	ZERO_STRUCT(q_u);
-	ZERO_STRUCT(r_u);
-
-	/* Unmarshall the net file set info from Win9x */
-	if(!srv_io_q_net_file_set_secdesc("", &q_u, data, 0)) {
-		DEBUG(0,("api_srv_net_file_set_secdesc: Failed to unmarshall SRV_Q_NET_FILE_SET_SECDESC.\n"));
-		return False;
-	}
-
-	r_u.status = _srv_net_file_set_secdesc(p, &q_u, &r_u);
-
-	if(!srv_io_r_net_file_set_secdesc("", &r_u, rdata, 0)) {
-		DEBUG(0,("api_srv_net_file_set_secdesc: Failed to marshall SRV_R_NET_FILE_SET_SECDESC.\n"));
-		return False;
-	}
-
-	return True;
+	return proxy_srvsvc_call(p, NDR_SRVSVC_NETSETFILESECURITY);
 }
 
 /*******************************************************************
diff --git a/source/rpc_server/srv_srvsvc_nt.c b/source/rpc_server/srv_srvsvc_nt.c
index d45ebb2..0d4addd 100644
--- a/source/rpc_server/srv_srvsvc_nt.c
+++ b/source/rpc_server/srv_srvsvc_nt.c
@@ -2068,11 +2068,12 @@ WERROR _srvsvc_NetRemoteTOD(pipes_struct *p,
 }
 
 /***********************************************************************************
+ _srvsvc_NetGetFileSecurity
  Win9x NT tools get security descriptor.
 ***********************************************************************************/
 
-WERROR _srv_net_file_query_secdesc(pipes_struct *p, SRV_Q_NET_FILE_QUERY_SECDESC *q_u,
-			SRV_R_NET_FILE_QUERY_SECDESC *r_u)
+WERROR _srvsvc_NetGetFileSecurity(pipes_struct *p,
+				  struct srvsvc_NetGetFileSecurity *r)
 {
 	SEC_DESC *psd = NULL;
 	size_t sd_size;
@@ -2082,18 +2083,20 @@ WERROR _srv_net_file_query_secdesc(pipes_struct *p, SRV_Q_NET_FILE_QUERY_SECDESC
 	char *qualname = NULL;
 	SMB_STRUCT_STAT st;
 	NTSTATUS nt_status;
+	WERROR werr;
 	struct current_user user;
 	connection_struct *conn = NULL;
 	bool became_user = False;
 	TALLOC_CTX *ctx = p->mem_ctx;
+	struct sec_desc_buf *sd_buf;
 
 	ZERO_STRUCT(st);
 
-	r_u->status = WERR_OK;
+	werr = WERR_OK;
 
-	qualname = unistr2_to_ascii_talloc(ctx, &q_u->uni_qual_name);
+	qualname = talloc_strdup(ctx, r->in.share);
 	if (!qualname) {
-		r_u->status = WERR_ACCESS_DENIED;
+		werr = WERR_ACCESS_DENIED;
 		goto error_exit;
 	}
 
@@ -2107,35 +2110,38 @@ WERROR _srv_net_file_query_secdesc(pipes_struct *p, SRV_Q_NET_FILE_QUERY_SECDESC
 	unbecome_root();
 
 	if (conn == NULL) {
-		DEBUG(3,("_srv_net_file_query_secdesc: Unable to connect to %s\n", qualname));
-		r_u->status = ntstatus_to_werror(nt_status);
+		DEBUG(3,("_srvsvc_NetGetFileSecurity: Unable to connect to %s\n",
+			qualname));
+		werr = ntstatus_to_werror(nt_status);
 		goto error_exit;
 	}
 
 	if (!become_user(conn, conn->vuid)) {
-		DEBUG(0,("_srv_net_file_query_secdesc: Can't become connected user!\n"));
-		r_u->status = WERR_ACCESS_DENIED;
+		DEBUG(0,("_srvsvc_NetGetFileSecurity: Can't become connected user!\n"));
+		werr = WERR_ACCESS_DENIED;
 		goto error_exit;
 	}
 	became_user = True;
 
-	filename_in = unistr2_to_ascii_talloc(ctx, &q_u->uni_file_name);
+	filename_in = talloc_strdup(ctx, r->in.file);
 	if (!filename_in) {
-		r_u->status = WERR_ACCESS_DENIED;
+		werr = WERR_ACCESS_DENIED;
 		goto error_exit;
 	}
 
 	nt_status = unix_convert(ctx, conn, filename_in, False, &filename, NULL, &st);
 	if (!NT_STATUS_IS_OK(nt_status)) {
-		DEBUG(3,("_srv_net_file_query_secdesc: bad pathname %s\n", filename));
-		r_u->status = WERR_ACCESS_DENIED;
+		DEBUG(3,("_srvsvc_NetGetFileSecurity: bad pathname %s\n",
+			filename));
+		werr = WERR_ACCESS_DENIED;
 		goto error_exit;
 	}
 
 	nt_status = check_name(conn, filename);
 	if (!NT_STATUS_IS_OK(nt_status)) {
-		DEBUG(3,("_srv_net_file_query_secdesc: can't access %s\n", filename));
-		r_u->status = WERR_ACCESS_DENIED;
+		DEBUG(3,("_srvsvc_NetGetFileSecurity: can't access %s\n",
+			filename));
+		werr = WERR_ACCESS_DENIED;
 		goto error_exit;
 	}
 
@@ -2145,24 +2151,30 @@ WERROR _srv_net_file_query_secdesc(pipes_struct *p, SRV_Q_NET_FILE_QUERY_SECDESC
 					|DACL_SECURITY_INFORMATION), &psd);
 
 	if (!NT_STATUS_IS_OK(nt_status)) {
-		DEBUG(3,("_srv_net_file_query_secdesc: Unable to get NT ACL for file %s\n", filename));
-		r_u->status = ntstatus_to_werror(nt_status);
+		DEBUG(3,("_srvsvc_NetGetFileSecurity: Unable to get NT ACL for file %s\n",
+			filename));
+		werr = ntstatus_to_werror(nt_status);
 		goto error_exit;
 	}
 
 	sd_size = ndr_size_security_descriptor(psd, 0);
 
-	r_u->ptr_response = 1;
-	r_u->size_response = sd_size;
-	r_u->ptr_secdesc = 1;
-	r_u->size_secdesc = sd_size;
-	r_u->sec_desc = psd;
+	sd_buf = TALLOC_ZERO_P(ctx, struct sec_desc_buf);
+	if (!sd_buf) {
+		werr = WERR_NOMEM;
+		goto error_exit;
+	}
+
+	sd_buf->sd_size = sd_size;
+	sd_buf->sd = psd;
+
+	*r->out.sd_buf = sd_buf;
 
 	psd->dacl->revision = NT4_ACL_REVISION;
 
 	unbecome_user();
 	close_cnum(conn, user.vuid);
-	return r_u->status;
+	return werr;
 
 error_exit:
 
@@ -2172,15 +2184,16 @@ error_exit:
 	if (conn)
 		close_cnum(conn, user.vuid);
 
-	return r_u->status;
+	return werr;
 }
 
 /***********************************************************************************
+ _srvsvc_NetSetFileSecurity
  Win9x NT tools set security descriptor.
 ***********************************************************************************/
 
-WERROR _srv_net_file_set_secdesc(pipes_struct *p, SRV_Q_NET_FILE_SET_SECDESC *q_u,
-									SRV_R_NET_FILE_SET_SECDESC *r_u)
+WERROR _srvsvc_NetSetFileSecurity(pipes_struct *p,
+				  struct srvsvc_NetSetFileSecurity *r)
 {
 	char *filename_in = NULL;
 	char *filename = NULL;
@@ -2189,6 +2202,7 @@ WERROR _srv_net_file_set_secdesc(pipes_struct *p, SRV_Q_NET_FILE_SET_SECDESC *q_
 	files_struct *fsp = NULL;
 	SMB_STRUCT_STAT st;
 	NTSTATUS nt_status;
+	WERROR werr;
 	struct current_user user;
 	connection_struct *conn = NULL;
 	bool became_user = False;
@@ -2196,11 +2210,11 @@ WERROR _srv_net_file_set_secdesc(pipes_struct *p, SRV_Q_NET_FILE_SET_SECDESC *q_
 
 	ZERO_STRUCT(st);
 
-	r_u->status = WERR_OK;
+	werr = WERR_OK;
 
-	qualname = unistr2_to_ascii_talloc(ctx, &q_u->uni_qual_name);
+	qualname = talloc_strdup(ctx, r->in.share);
 	if (!qualname) {
-		r_u->status = WERR_ACCESS_DENIED;
+		werr = WERR_ACCESS_DENIED;
 		goto error_exit;
 	}
 
@@ -2214,35 +2228,35 @@ WERROR _srv_net_file_set_secdesc(pipes_struct *p, SRV_Q_NET_FILE_SET_SECDESC *q_
 	unbecome_root();
 
 	if (conn == NULL) {
-		DEBUG(3,("_srv_net_file_set_secdesc: Unable to connect to %s\n", qualname));
-		r_u->status = ntstatus_to_werror(nt_status);
+		DEBUG(3,("_srvsvc_NetSetFileSecurity: Unable to connect to %s\n", qualname));
+		werr = ntstatus_to_werror(nt_status);
 		goto error_exit;
 	}
 
 	if (!become_user(conn, conn->vuid)) {
-		DEBUG(0,("_srv_net_file_set_secdesc: Can't become connected user!\n"));
-		r_u->status = WERR_ACCESS_DENIED;
+		DEBUG(0,("_srvsvc_NetSetFileSecurity: Can't become connected user!\n"));
+		werr = WERR_ACCESS_DENIED;
 		goto error_exit;
 	}
 	became_user = True;
 
-	filename_in= unistr2_to_ascii_talloc(ctx, &q_u->uni_file_name);
+	filename_in = talloc_strdup(ctx, r->in.file);
 	if (!filename_in) {
-		r_u->status = WERR_ACCESS_DENIED;
+		werr = WERR_ACCESS_DENIED;
 		goto error_exit;
 	}
 
 	nt_status = unix_convert(ctx, conn, filename, False, &filename, NULL, &st);
 	if (!NT_STATUS_IS_OK(nt_status)) {
-		DEBUG(3,("_srv_net_file_set_secdesc: bad pathname %s\n", filename));
-		r_u->status = WERR_ACCESS_DENIED;
+		DEBUG(3,("_srvsvc_NetSetFileSecurity: bad pathname %s\n", filename));
+		werr = WERR_ACCESS_DENIED;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list