svn commit: samba r18413 - in branches/SAMBA_3_0/source/rpc_server: .

idra at samba.org idra at samba.org
Tue Sep 12 02:26:33 GMT 2006


Author: idra
Date: 2006-09-12 02:26:32 +0000 (Tue, 12 Sep 2006)
New Revision: 18413

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=18413

Log:

Based on the new torture test I added in samba4 it turns out
the flags determines what kind of share is this.
I suppose 0x80000000 means something like (legacy) as it will
fail for any share name longer then 13 chars (same size accepted
for old RAP calls that come from pre NT OSs.

Jerry,
let me know if you want me to commit this to 3_0_23

Simo.


Modified:
   branches/SAMBA_3_0/source/rpc_server/srv_srvsvc_nt.c


Changeset:
Modified: branches/SAMBA_3_0/source/rpc_server/srv_srvsvc_nt.c
===================================================================
--- branches/SAMBA_3_0/source/rpc_server/srv_srvsvc_nt.c	2006-09-12 02:24:21 UTC (rev 18412)
+++ branches/SAMBA_3_0/source/rpc_server/srv_srvsvc_nt.c	2006-09-12 02:26:32 UTC (rev 18413)
@@ -2221,11 +2221,28 @@
 WERROR _srv_net_name_validate(pipes_struct *p, SRV_Q_NET_NAME_VALIDATE *q_u, SRV_R_NET_NAME_VALIDATE *r_u)
 {
 	fstring sharename;
+	int len;
 
+	if ((q_u->flags != 0x0) && (q_u->flags != 0x80000000)) {
+		return WERR_INVALID_PARAM;
+	}
+
 	switch ( q_u->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) ) ) {
+
+		len = strlen_m(sharename);
+
+		if ((q_u->flags == 0x0) && (len > 81)) {
+			DEBUG(5,("_srv_net_name_validate: share name too long (%s > 81 chars)\n", sharename));
+			return WERR_INVALID_NAME;
+		}
+		if ((q_u->flags == 0x80000000) && (len > 13)) {
+			DEBUG(5,("_srv_net_name_validate: share name too long (%s > 13 chars)\n", sharename));
+			return WERR_INVALID_NAME;
+		}
+
+		if ( ! validate_net_name( sharename, INVALID_SHARENAME_CHARS, sizeof(sharename) ) ) {
 			DEBUG(5,("_srv_net_name_validate: Bad sharename \"%s\"\n", sharename));
 			return WERR_INVALID_NAME;
 		}



More information about the samba-cvs mailing list