srvsvc: Only list shares in "server addresses"
authorVolker Lendecke <vl@samba.org>
Fri, 21 Oct 2022 15:02:07 +0000 (17:02 +0200)
committerVolker Lendecke <vl@samba.org>
Thu, 10 Nov 2022 07:27:31 +0000 (07:27 +0000)
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
source3/rpc_server/srvsvc/srv_srvsvc_nt.c

index 07bfb7591471dd5b9cb0a8d19b50476186e98787..4fcb7681d84a717cd6c0327d03ab78b97d2206e2 100644 (file)
@@ -44,6 +44,8 @@
 #include "serverid.h"
 #include "lib/global_contexts.h"
 #include "source3/lib/substitute.h"
+#include "lib/tsocket/tsocket.h"
+#include "librpc/rpc/dcesrv_core.h"
 
 extern const struct generic_mapping file_generic_mapping;
 
@@ -615,6 +617,9 @@ static WERROR init_srv_share_info_ctr(struct pipes_struct *p,
        struct dcesrv_call_state *dce_call = p->dce_call;
        struct auth_session_info *session_info =
                dcesrv_call_session_info(dce_call);
+       struct dcesrv_connection *dcesrv_conn = dce_call->conn;
+       const struct tsocket_address *local_address =
+               dcesrv_connection_get_local_address(dcesrv_conn);
        const struct loadparm_substitution *lp_sub =
                loadparm_s3_global_substitution();
        uint32_t num_entries = 0;
@@ -655,8 +660,9 @@ static WERROR init_srv_share_info_ctr(struct pipes_struct *p,
         /* Count the number of entries. */
         for (snum = 0; snum < num_services; snum++) {
                 if (lp_browseable(snum) && lp_snum_ok(snum) &&
-                    is_enumeration_allowed(p, snum) &&
-                    (all_shares || !is_hidden_share(snum)) ) {
+                    lp_allow_local_address(snum, local_address) &&
+                   is_enumeration_allowed(p, snum) &&
+                    (all_shares || !is_hidden_share(snum))) {
                         DEBUG(10, ("counting service %s\n",
                                lp_servicename(talloc_tos(), lp_sub, snum) ? lp_servicename(talloc_tos(), lp_sub, snum) : "(null)"));
                         allowed[snum] = true;