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

Günther Deschner gd at samba.org
Fri Mar 7 22:54:36 GMT 2008


The branch, v3-2-test has been updated
       via  6ffd6c814fafe4112fe72a96a0893d5be06f4380 (commit)
       via  2afae94936d4fbd3b1e804111bff1960c2b852bd (commit)
       via  10d457152e8547646353f0f37f51ac92561505ef (commit)
       via  2e1df306785296979ea064006402254e318e946b (commit)
       via  140885d3d87ea2de14b3393a7384dff74a4dd44c (commit)
      from  96f85a48beb7da9c373fc030474020d05c55a18d (commit)

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


- Log -----------------------------------------------------------------
commit 6ffd6c814fafe4112fe72a96a0893d5be06f4380
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 7 23:50:00 2008 +0100

    Remove unused marshalling for SRV_NET_NAME_VALIDATE.
    
    Guenther

commit 2afae94936d4fbd3b1e804111bff1960c2b852bd
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 7 23:47:40 2008 +0100

    Remove unused marshalling for SRV_NET_SHARE_DEL.
    
    Guenther

commit 10d457152e8547646353f0f37f51ac92561505ef
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 7 23:45:39 2008 +0100

    Use rpccli_srvsvc_NetShareDel in net.
    
    Guenther

commit 2e1df306785296979ea064006402254e318e946b
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 7 23:40:00 2008 +0100

    Use pidl for _srvsvc_NetNameValidate.
    
    Guenther

commit 140885d3d87ea2de14b3393a7384dff74a4dd44c
Author: Günther Deschner <gd at samba.org>
Date:   Fri Mar 7 23:39:34 2008 +0100

    Add netnamevalidate command to rpcclient.
    
    Guenther

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

Summary of changes:
 source/include/rpc_srvsvc.h       |   31 ---------
 source/rpc_client/cli_srvsvc.c    |   32 ----------
 source/rpc_parse/parse_srv.c      |  122 -------------------------------------
 source/rpc_server/srv_srvsvc.c    |   25 +-------
 source/rpc_server/srv_srvsvc_nt.c |   23 +++----
 source/rpcclient/cmd_srvsvc.c     |   34 ++++++++++
 source/utils/net_rpc.c            |   17 ++++-
 7 files changed, 58 insertions(+), 226 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/include/rpc_srvsvc.h b/source/include/rpc_srvsvc.h
index d0b25e4..3ea55bd 100644
--- a/source/include/rpc_srvsvc.h
+++ b/source/include/rpc_srvsvc.h
@@ -75,20 +75,6 @@ typedef struct net_srv_disk_enum {
 
 /***************************/
 
-typedef struct  {
-	UNISTR2 *servername;
-	UNISTR2 sharename;
-	uint32 type;
-	uint32 flags;
-	WERROR status;
-} SRV_Q_NET_NAME_VALIDATE;
-
-typedef struct  {
-	WERROR status;
-} SRV_R_NET_NAME_VALIDATE;
-
-/***************************/
-
 /* oops - this is going to take up a *massive* amount of stack. */
 /* the UNISTR2s already have 1024 uint16 chars in them... */
 
@@ -625,23 +611,6 @@ typedef struct r_net_share_add
 
 } SRV_R_NET_SHARE_ADD;
 
-/* SRV_Q_NET_SHARE_DEL */
-typedef struct q_net_share_del
-{
-	uint32 ptr_srv_name;
-	UNISTR2 uni_srv_name;
-	UNISTR2 uni_share_name;
-	uint32 reserved;
-
-} SRV_Q_NET_SHARE_DEL;
-
-/* SRV_R_NET_SHARE_DEL */
-typedef struct r_net_share_del
-{
-	WERROR status;               /* return status */
-
-} SRV_R_NET_SHARE_DEL;
-
 /***************************/
 
 typedef struct {
diff --git a/source/rpc_client/cli_srvsvc.c b/source/rpc_client/cli_srvsvc.c
index 524678c..c043120 100644
--- a/source/rpc_client/cli_srvsvc.c
+++ b/source/rpc_client/cli_srvsvc.c
@@ -362,38 +362,6 @@ WERROR rpccli_srvsvc_net_share_set_info(struct rpc_pipe_client *cli,
 	return result;
 }
 
-WERROR rpccli_srvsvc_net_share_del(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-				const char *sharename)
-{
-	prs_struct qbuf, rbuf;
-	SRV_Q_NET_SHARE_DEL q;
-	SRV_R_NET_SHARE_DEL r;
-	WERROR result = W_ERROR(ERRgeneral);
-	fstring server;
-
-	ZERO_STRUCT(q);
-	ZERO_STRUCT(r);
-
-	/* Initialise input parameters */
-
-	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
-
-	init_srv_q_net_share_del(&q, server, sharename);
-
-	/* Marshall data and send request */
-
-	CLI_DO_RPC_WERR(cli, mem_ctx, PI_SRVSVC, SRV_NET_SHARE_DEL,
-		q, r,
-		qbuf, rbuf,
-		srv_io_q_net_share_del,
-		srv_io_r_net_share_del,
-		WERR_GENERAL_FAILURE);
-
-	result = r.status;
-	return result;
-}
-
 WERROR rpccli_srvsvc_net_share_add(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 				const char *netname, uint32 type, 
 				const char *remark, uint32 perms, 
diff --git a/source/rpc_parse/parse_srv.c b/source/rpc_parse/parse_srv.c
index a09e704..b4cc087 100644
--- a/source/rpc_parse/parse_srv.c
+++ b/source/rpc_parse/parse_srv.c
@@ -1522,70 +1522,6 @@ bool srv_io_r_net_share_add(const char *desc, SRV_R_NET_SHARE_ADD *r_n, prs_stru
 }	
 
 /*******************************************************************
- initialises a structure.
-********************************************************************/
-
-void init_srv_q_net_share_del(SRV_Q_NET_SHARE_DEL *del, const char *srvname,
-			      const char *sharename)
-{
-	del->ptr_srv_name = 1;
-	init_unistr2(&del->uni_srv_name, srvname, UNI_STR_TERMINATE);
-	init_unistr2(&del->uni_share_name, sharename, UNI_STR_TERMINATE);
-}
-
-/*******************************************************************
- Reads or writes a structure.
-********************************************************************/
-
-bool srv_io_q_net_share_del(const char *desc, SRV_Q_NET_SHARE_DEL *q_n, prs_struct *ps, int depth)
-{
-	if (q_n == NULL)
-		return False;
-
-	prs_debug(ps, depth, desc, "srv_io_q_net_share_del");
-	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(!smb_io_unistr2("", &q_n->uni_share_name, True, ps, depth))
-		return False;
-
-	if(!prs_align(ps))
-		return False;
-	if(!prs_uint32("reserved", ps, depth, &q_n->reserved))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
- Reads or writes a structure.
-********************************************************************/
-
-bool srv_io_r_net_share_del(const char *desc, SRV_R_NET_SHARE_DEL *q_n, prs_struct *ps, int depth)
-{
-	if (q_n == NULL)
-		return False;
-
-	prs_debug(ps, depth, desc, "srv_io_r_net_share_del");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!prs_werror("status", ps, depth, &q_n->status))
-		return False;
-
-	return True;
-}	
-
-/*******************************************************************
  Inits a SESS_INFO_0_STR structure
 ********************************************************************/
 
@@ -2759,64 +2695,6 @@ bool srv_io_r_net_disk_enum(const char *desc, SRV_R_NET_DISK_ENUM *r_n, prs_stru
 
 /*******************************************************************
  Reads or writes a structure.
- ********************************************************************/
-
-bool srv_io_q_net_name_validate(const char *desc, SRV_Q_NET_NAME_VALIDATE *q_n, prs_struct *ps, int depth)
-{
-	if (q_n == NULL)
-		return False;
-
-	prs_debug(ps, depth, desc, "srv_io_q_net_name_validate");
-	depth++;
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!prs_pointer("servername", ps, depth, (void*)&q_n->servername,
-			sizeof(UNISTR2), (PRS_POINTER_CAST)prs_io_unistr2))
-		return False;
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!smb_io_unistr2("", &q_n->sharename, True, ps, depth))
-		return False;
-
-	if(!prs_align(ps))
-		return False;
-
-	if(!prs_uint32("type", ps, depth, &q_n->type))
-		return False;
-
-	if(!prs_uint32("flags", ps, depth, &q_n->flags))
-		return False;
-
-	return True;
-}
-
-/*******************************************************************
- Reads or writes a structure.
- ********************************************************************/
-
-bool srv_io_r_net_name_validate(const char *desc, SRV_R_NET_NAME_VALIDATE *r_n, prs_struct *ps, int depth)
-{
-	if (r_n == NULL)
-		return False;
-
-	prs_debug(ps, depth, desc, "srv_io_r_net_name_validate");
-	depth++;
-
-	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_query_secdesc(const char *desc, SRV_Q_NET_FILE_QUERY_SECDESC *q_n, prs_struct *ps, int depth)
diff --git a/source/rpc_server/srv_srvsvc.c b/source/rpc_server/srv_srvsvc.c
index 875cda5..8853295 100644
--- a/source/rpc_server/srv_srvsvc.c
+++ b/source/rpc_server/srv_srvsvc.c
@@ -301,30 +301,9 @@ static bool api_srv_net_disk_enum(pipes_struct *p)
  NetValidateName (opnum 0x21) 
 *******************************************************************/
 
-static bool api_srv_net_name_validate(pipes_struct *p) 
+static bool api_srv_net_name_validate(pipes_struct *p)
 {
-	SRV_Q_NET_NAME_VALIDATE q_u;
-	SRV_R_NET_NAME_VALIDATE 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 server disk enum. */
-	if(!srv_io_q_net_name_validate("", &q_u, data, 0)) {
-		DEBUG(0,("api_srv_net_name_validate: Failed to unmarshall SRV_Q_NET_NAME_VALIDATE.\n"));
-		return False;
-	}
-
-	r_u.status = _srv_net_name_validate(p, &q_u, &r_u);
-
-	if(!srv_io_r_net_name_validate("", &r_u, rdata, 0)) {
-		DEBUG(0,("api_srv_net_name_validate: Failed to marshall SRV_R_NET_NAME_VALIDATE.\n"));
-		return False;
-	}
-
-	return True;
+	return proxy_srvsvc_call(p, NDR_SRVSVC_NETNAMEVALIDATE);
 }
 
 /*******************************************************************
diff --git a/source/rpc_server/srv_srvsvc_nt.c b/source/rpc_server/srv_srvsvc_nt.c
index a6cf06c..a64691c 100644
--- a/source/rpc_server/srv_srvsvc_nt.c
+++ b/source/rpc_server/srv_srvsvc_nt.c
@@ -2380,17 +2380,19 @@ WERROR _srv_net_disk_enum(pipes_struct *p, SRV_Q_NET_DISK_ENUM *q_u, SRV_R_NET_D
 }
 
 /********************************************************************
+ _srvsvc_NetNameValidate
 ********************************************************************/
 
-WERROR _srv_net_name_validate(pipes_struct *p, SRV_Q_NET_NAME_VALIDATE *q_u, SRV_R_NET_NAME_VALIDATE *r_u)
+WERROR _srvsvc_NetNameValidate(pipes_struct *p,
+			       struct srvsvc_NetNameValidate *r)
 {
-	fstring sharename;
-
-	switch ( q_u->type ) {
+	switch (r->in.name_type) {
 	case 0x9:
-		rpcstr_pull(sharename, q_u->sharename.buffer, sizeof(sharename), q_u->sharename.uni_str_len*2, 0);
-		if ( !validate_net_name( sharename, INVALID_SHARENAME_CHARS, sizeof(sharename) ) ) {
-			DEBUG(5,("_srv_net_name_validate: Bad sharename \"%s\"\n", sharename));
+		if (!validate_net_name(r->in.name, INVALID_SHARENAME_CHARS,
+				       strlen_m(r->in.name)))
+		{
+			DEBUG(5,("_srvsvc_NetNameValidate: Bad sharename \"%s\"\n",
+				r->in.name));
 			return WERR_INVALID_NAME;
 		}
 		break;
@@ -2402,7 +2404,6 @@ WERROR _srv_net_name_validate(pipes_struct *p, SRV_Q_NET_NAME_VALIDATE *q_u, SRV
 	return WERR_OK;
 }
 
-
 /********************************************************************
 ********************************************************************/
 
@@ -2559,12 +2560,6 @@ WERROR _srvsvc_NetPathCompare(pipes_struct *p, struct srvsvc_NetPathCompare *r)
 	return WERR_NOT_SUPPORTED;
 }
 
-WERROR _srvsvc_NetNameValidate(pipes_struct *p, struct srvsvc_NetNameValidate *r)
-{
-	p->rng_fault_state = True;
-	return WERR_NOT_SUPPORTED;
-}
-
 WERROR _srvsvc_NETRPRNAMECANONICALIZE(pipes_struct *p, struct srvsvc_NETRPRNAMECANONICALIZE *r)
 {
 	p->rng_fault_state = True;
diff --git a/source/rpcclient/cmd_srvsvc.c b/source/rpcclient/cmd_srvsvc.c
index e480b71..8c85372 100644
--- a/source/rpcclient/cmd_srvsvc.c
+++ b/source/rpcclient/cmd_srvsvc.c
@@ -572,6 +572,39 @@ static WERROR cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli,
 	return result;
 }
 
+static WERROR cmd_srvsvc_net_name_validate(struct rpc_pipe_client *cli,
+					   TALLOC_CTX *mem_ctx,
+					   int argc, const char **argv)
+{
+	WERROR result;
+	NTSTATUS status;
+	uint32_t name_type = 9;
+	uint32_t flags = 0;
+
+	if (argc < 2 || argc > 3) {
+		printf("Usage: %s [sharename] [type]\n", argv[0]);
+		return WERR_OK;
+	}
+
+	if (argc == 3) {
+		name_type = atoi(argv[2]);
+	}
+
+	status = rpccli_srvsvc_NetNameValidate(cli, mem_ctx,
+					       cli->cli->desthost,
+					       argv[1],
+					       name_type,
+					       flags,
+					       &result);
+
+	if (!W_ERROR_IS_OK(result))
+		goto done;
+
+ done:
+	return result;
+}
+
+
 /* List of commands exported by this module */
 
 struct cmd_set srvsvc_commands[] = {
@@ -585,6 +618,7 @@ struct cmd_set srvsvc_commands[] = {
 	{ "netsharesetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_set_info, PI_SRVSVC, NULL, "Set Share Info", "" },
 	{ "netfileenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_enum,  PI_SRVSVC, NULL, "Enumerate open files", "" },
 	{ "netremotetod",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_remote_tod, PI_SRVSVC, NULL, "Fetch remote time of day", "" },
+	{ "netnamevalidate", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_name_validate, PI_SRVSVC, NULL, "Validate sharename", "" },
 
 	{ NULL }
 };
diff --git a/source/utils/net_rpc.c b/source/utils/net_rpc.c
index f7fadb9..399ace8 100644
--- a/source/utils/net_rpc.c
+++ b/source/utils/net_rpc.c
@@ -3314,8 +3314,11 @@ static NTSTATUS rpc_share_del_internals(const DOM_SID *domain_sid,
 {
 	WERROR result;
 
-	result = rpccli_srvsvc_net_share_del(pipe_hnd, mem_ctx, argv[0]);
-	return W_ERROR_IS_OK(result) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
+	return rpccli_srvsvc_NetShareDel(pipe_hnd, mem_ctx,
+					 pipe_hnd->cli->desthost,
+					 argv[0],
+					 0,
+					 &result);
 }
 
 /** 
@@ -5064,14 +5067,20 @@ static NTSTATUS rpc_sh_share_delete(TALLOC_CTX *mem_ctx,
 				    int argc, const char **argv)
 {
 	WERROR result;
+	NTSTATUS status;
 
 	if (argc != 1) {
 		d_fprintf(stderr, "usage: %s <share>\n", ctx->whoami);
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
-	result = rpccli_srvsvc_net_share_del(pipe_hnd, mem_ctx, argv[0]);
-	return werror_to_ntstatus(result);
+	status = rpccli_srvsvc_NetShareDel(pipe_hnd, mem_ctx,
+					   pipe_hnd->cli->desthost,
+					   argv[0],
+					   0,
+					   &result);
+
+	return status;
 }
 
 static NTSTATUS rpc_sh_share_info(TALLOC_CTX *mem_ctx,


-- 
Samba Shared Repository


More information about the samba-cvs mailing list