OpenWrt – Rev 4

Subversion Repositories:
Rev:
--- 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) {