You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							143 lines
						
					
					
						
							3.5 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							143 lines
						
					
					
						
							3.5 KiB
						
					
					
				
								--- a/source3/smbd/lanman.c
							 | 
						|
								+++ b/source3/smbd/lanman.c
							 | 
						|
								@@ -2197,6 +2197,10 @@ static bool api_RNetShareAdd(struct smbd
							 | 
						|
								 	struct srvsvc_NetShareInfo2 info2;
							 | 
						|
								 	struct dcerpc_binding_handle *b;
							 | 
						|
								 
							 | 
						|
								+#ifndef SRVSVC_SUPPORT
							 | 
						|
								+	return False;
							 | 
						|
								+#endif
							 | 
						|
								+
							 | 
						|
								 	if (!str1 || !str2 || !p) {
							 | 
						|
								 		return False;
							 | 
						|
								 	}
							 | 
						|
								@@ -3589,10 +3593,7 @@ static bool api_RNetServerGetInfo(struct
							 | 
						|
								 	NTSTATUS status;
							 | 
						|
								 	WERROR werr;
							 | 
						|
								 	TALLOC_CTX *mem_ctx = talloc_tos();
							 | 
						|
								-	struct rpc_pipe_client *cli = NULL;
							 | 
						|
								-	union srvsvc_NetSrvInfo info;
							 | 
						|
								 	int errcode;
							 | 
						|
								-	struct dcerpc_binding_handle *b;
							 | 
						|
								 
							 | 
						|
								 	if (!str1 || !str2 || !p) {
							 | 
						|
								 		return False;
							 | 
						|
								@@ -3655,66 +3656,16 @@ static bool api_RNetServerGetInfo(struct
							 | 
						|
								 	p = *rdata;
							 | 
						|
								 	p2 = p + struct_len;
							 | 
						|
								 
							 | 
						|
								-	status = rpc_pipe_open_interface(mem_ctx, &ndr_table_srvsvc.syntax_id,
							 | 
						|
								-					conn->session_info,
							 | 
						|
								-					&conn->sconn->client_id,
							 | 
						|
								-					conn->sconn->msg_ctx,
							 | 
						|
								-					&cli);
							 | 
						|
								-	if (!NT_STATUS_IS_OK(status)) {
							 | 
						|
								-		DEBUG(0,("api_RNetServerGetInfo: could not connect to srvsvc: %s\n",
							 | 
						|
								-			  nt_errstr(status)));
							 | 
						|
								-		errcode = W_ERROR_V(ntstatus_to_werror(status));
							 | 
						|
								-		goto out;
							 | 
						|
								-	}
							 | 
						|
								-
							 | 
						|
								-	b = cli->binding_handle;
							 | 
						|
								-
							 | 
						|
								-	status = dcerpc_srvsvc_NetSrvGetInfo(b, mem_ctx,
							 | 
						|
								-					     NULL,
							 | 
						|
								-					     101,
							 | 
						|
								-					     &info,
							 | 
						|
								-					     &werr);
							 | 
						|
								-	if (!NT_STATUS_IS_OK(status)) {
							 | 
						|
								-		errcode = W_ERROR_V(ntstatus_to_werror(status));
							 | 
						|
								-		goto out;
							 | 
						|
								-	}
							 | 
						|
								-	if (!W_ERROR_IS_OK(werr)) {
							 | 
						|
								-		errcode = W_ERROR_V(werr);
							 | 
						|
								-		goto out;
							 | 
						|
								-	}
							 | 
						|
								-
							 | 
						|
								-	if (info.info101 == NULL) {
							 | 
						|
								-		errcode = W_ERROR_V(WERR_INVALID_PARAM);
							 | 
						|
								-		goto out;
							 | 
						|
								-	}
							 | 
						|
								-
							 | 
						|
								 	if (uLevel != 20) {
							 | 
						|
								-		srvstr_push(NULL, 0, p, info.info101->server_name, 16,
							 | 
						|
								+		srvstr_push(NULL, 0, p, global_myname(), 16,
							 | 
						|
								 			STR_ASCII|STR_UPPER|STR_TERMINATE);
							 | 
						|
								-  	}
							 | 
						|
								+	}
							 | 
						|
								 	p += 16;
							 | 
						|
								 	if (uLevel > 0) {
							 | 
						|
								-		SCVAL(p,0,info.info101->version_major);
							 | 
						|
								-		SCVAL(p,1,info.info101->version_minor);
							 | 
						|
								-		SIVAL(p,2,info.info101->server_type);
							 | 
						|
								-
							 | 
						|
								-		if (mdrcnt == struct_len) {
							 | 
						|
								-			SIVAL(p,6,0);
							 | 
						|
								-		} else {
							 | 
						|
								-			SIVAL(p,6,PTR_DIFF(p2,*rdata));
							 | 
						|
								-			if (mdrcnt - struct_len <= 0) {
							 | 
						|
								-				return false;
							 | 
						|
								-			}
							 | 
						|
								-			push_ascii(p2,
							 | 
						|
								-				info.info101->comment,
							 | 
						|
								-				MIN(mdrcnt - struct_len,
							 | 
						|
								-					MAX_SERVER_STRING_LENGTH),
							 | 
						|
								-				STR_TERMINATE);
							 | 
						|
								-			p2 = skip_string(*rdata,*rdata_len,p2);
							 | 
						|
								-			if (!p2) {
							 | 
						|
								-				return False;
							 | 
						|
								-			}
							 | 
						|
								-		}
							 | 
						|
								+		SCVAL(p,0,lp_major_announce_version());
							 | 
						|
								+		SCVAL(p,1,lp_minor_announce_version());
							 | 
						|
								+		SIVAL(p,2,lp_default_server_announce());
							 | 
						|
								+		SIVAL(p,6,0);
							 | 
						|
								 	}
							 | 
						|
								 
							 | 
						|
								 	if (uLevel > 1) {
							 | 
						|
								@@ -5405,6 +5356,10 @@ static bool api_RNetSessionEnum(struct s
							 | 
						|
								 	uint32_t totalentries, resume_handle = 0;
							 | 
						|
								 	uint32_t count = 0;
							 | 
						|
								 
							 | 
						|
								+#ifndef SRVSVC_SUPPORT
							 | 
						|
								+	return False;
							 | 
						|
								+#endif
							 | 
						|
								+
							 | 
						|
								 	if (!str1 || !str2 || !p) {
							 | 
						|
								 		return False;
							 | 
						|
								 	}
							 | 
						|
								--- a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
							 | 
						|
								+++ b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
							 | 
						|
								@@ -1533,6 +1533,10 @@ WERROR _srvsvc_NetShareSetInfo(struct pi
							 | 
						|
								 	TALLOC_CTX *ctx = p->mem_ctx;
							 | 
						|
								 	union srvsvc_NetShareInfo *info = r->in.info;
							 | 
						|
								 
							 | 
						|
								+#ifndef FULL_SRVSVC
							 | 
						|
								+	return WERR_ACCESS_DENIED;
							 | 
						|
								+#endif
							 | 
						|
								+
							 | 
						|
								 	DEBUG(5,("_srvsvc_NetShareSetInfo: %d\n", __LINE__));
							 | 
						|
								 
							 | 
						|
								 	if (!r->in.share_name) {
							 | 
						|
								@@ -1763,6 +1767,10 @@ WERROR _srvsvc_NetShareAdd(struct pipes_
							 | 
						|
								 	int max_connections = 0;
							 | 
						|
								 	TALLOC_CTX *ctx = p->mem_ctx;
							 | 
						|
								 
							 | 
						|
								+#ifndef FULL_SRVSVC
							 | 
						|
								+	return WERR_ACCESS_DENIED;
							 | 
						|
								+#endif
							 | 
						|
								+
							 | 
						|
								 	DEBUG(5,("_srvsvc_NetShareAdd: %d\n", __LINE__));
							 | 
						|
								 
							 | 
						|
								 	if (r->out.parm_error) {
							 | 
						|
								@@ -1945,6 +1953,10 @@ WERROR _srvsvc_NetShareDel(struct pipes_
							 | 
						|
								 	struct share_params *params;
							 | 
						|
								 	TALLOC_CTX *ctx = p->mem_ctx;
							 | 
						|
								 
							 | 
						|
								+#ifndef FULL_SRVSVC
							 | 
						|
								+	return WERR_ACCESS_DENIED;
							 | 
						|
								+#endif
							 | 
						|
								+
							 | 
						|
								 	DEBUG(5,("_srvsvc_NetShareDel: %d\n", __LINE__));
							 | 
						|
								 
							 | 
						|
								 	if (!r->in.share_name) {
							 | 
						|
								
							 |