[PATCH] A few small ones around name lookup

Volker Lendecke Volker.Lendecke at SerNet.DE
Mon Jan 22 20:34:56 UTC 2018


Hi!

Review appreciated!

Thanks, Volker

-- 
Besuchen Sie die verinice.XP 2018 in Berlin,
Anwenderkonferenz für Informationssicherheit
vom 21.-23.03.2018 im Sofitel Kurfürstendamm
Info & Anmeldung hier: http://veriniceXP.org

SerNet GmbH, Bahnhofsallee 1b, 37081 Göttingen
phone: +49-551-370000-0, fax: +49-551-370000-9
AG Göttingen, HRB 2816, GF: Dr. Johannes Loxen
http://www.sernet.de, mailto:kontakt at sernet.de
-------------- next part --------------
From 9020ee9a53844136691c5ed673d7529415b910fd Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Mon, 15 Jan 2018 16:12:15 +0100
Subject: [PATCH 1/8] libsmb: Give unexpected.c its own header

Signed-off-by: Volker Lendecke <vl at samba.org>
---
 source3/libsmb/clidgram.c   |  1 +
 source3/libsmb/namequery.c  |  1 +
 source3/libsmb/nmblib.h     | 22 --------------------
 source3/libsmb/unexpected.c |  3 ++-
 source3/libsmb/unexpected.h | 49 +++++++++++++++++++++++++++++++++++++++++++++
 source3/nmbd/nmbd_packets.c |  1 +
 6 files changed, 54 insertions(+), 23 deletions(-)
 create mode 100644 source3/libsmb/unexpected.h

diff --git a/source3/libsmb/clidgram.c b/source3/libsmb/clidgram.c
index d8fa1c6b935..8f0dba3e0d8 100644
--- a/source3/libsmb/clidgram.c
+++ b/source3/libsmb/clidgram.c
@@ -24,6 +24,7 @@
 #include "../lib/util/tevent_ntstatus.h"
 #include "libsmb/clidgram.h"
 #include "libsmb/nmblib.h"
+#include "libsmb/unexpected.h"
 #include "messages.h"
 #include "librpc/gen_ndr/samr.h"
 #include "../lib/util/pidfile.h"
diff --git a/source3/libsmb/namequery.c b/source3/libsmb/namequery.c
index 4b41546b533..6107e8ff7b4 100644
--- a/source3/libsmb/namequery.c
+++ b/source3/libsmb/namequery.c
@@ -26,6 +26,7 @@
 #include "lib/async_req/async_sock.h"
 #include "lib/tsocket/tsocket.h"
 #include "libsmb/nmblib.h"
+#include "libsmb/unexpected.h"
 #include "../libcli/nbt/libnbt.h"
 #include "libads/kerberos_proto.h"
 
diff --git a/source3/libsmb/nmblib.h b/source3/libsmb/nmblib.h
index d8290dc0765..7e1e40c13e7 100644
--- a/source3/libsmb/nmblib.h
+++ b/source3/libsmb/nmblib.h
@@ -27,28 +27,6 @@
 
 #include "nameserv.h"
 
-struct nb_packet_server;
-struct nb_packet_reader;
-
-NTSTATUS nb_packet_server_create(TALLOC_CTX *mem_ctx,
-				 struct tevent_context *ev,
-				 int max_clients,
-				 struct nb_packet_server **presult);
-void nb_packet_dispatch(struct nb_packet_server *server,
-			struct packet_struct *p);
-struct tevent_req *nb_packet_reader_send(TALLOC_CTX *mem_ctx,
-					 struct tevent_context *ev,
-					 enum packet_type type,
-					 int trn_id,
-					 const char *mailslot_name);
-NTSTATUS nb_packet_reader_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
-			       struct nb_packet_reader **preader);
-struct tevent_req *nb_packet_read_send(TALLOC_CTX *mem_ctx,
-				       struct tevent_context *ev,
-				       struct nb_packet_reader *reader);
-NTSTATUS nb_packet_read_recv(struct tevent_req *req,
-			     struct packet_struct **ppacket);
-
 /* The following definitions come from libsmb/nmblib.c  */
 
 void debug_nmb_packet(struct packet_struct *p);
diff --git a/source3/libsmb/unexpected.c b/source3/libsmb/unexpected.c
index dd9ff7a22e1..96de1445a67 100644
--- a/source3/libsmb/unexpected.c
+++ b/source3/libsmb/unexpected.c
@@ -19,10 +19,11 @@
 */
 
 #include "includes.h"
+#include "libsmb/unexpected.h"
 #include "../lib/util/tevent_ntstatus.h"
 #include "lib/util_tsock.h"
-#include "lib/tsocket/tsocket.h"
 #include "libsmb/nmblib.h"
+#include "lib/tsocket/tsocket.h"
 #include "lib/util/sys_rw.h"
 
 static const char *nmbd_socket_dir(void)
diff --git a/source3/libsmb/unexpected.h b/source3/libsmb/unexpected.h
new file mode 100644
index 00000000000..a40a507f6e5
--- /dev/null
+++ b/source3/libsmb/unexpected.h
@@ -0,0 +1,49 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * Copyright (C) Volker Lendecke 2018
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __LIBSMB_UNEXPECTED_H__
+#define __LIBSMB_UNEXPECTED_H__
+
+#include "replace.h"
+#include <tevent.h>
+#include "libcli/util/ntstatus.h"
+#include "nameserv.h"
+
+struct nb_packet_server;
+struct nb_packet_reader;
+
+NTSTATUS nb_packet_server_create(TALLOC_CTX *mem_ctx,
+				 struct tevent_context *ev,
+				 int max_clients,
+				 struct nb_packet_server **presult);
+void nb_packet_dispatch(struct nb_packet_server *server,
+			struct packet_struct *p);
+struct tevent_req *nb_packet_reader_send(TALLOC_CTX *mem_ctx,
+					 struct tevent_context *ev,
+					 enum packet_type type,
+					 int trn_id,
+					 const char *mailslot_name);
+NTSTATUS nb_packet_reader_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
+			       struct nb_packet_reader **preader);
+struct tevent_req *nb_packet_read_send(TALLOC_CTX *mem_ctx,
+				       struct tevent_context *ev,
+				       struct nb_packet_reader *reader);
+NTSTATUS nb_packet_read_recv(struct tevent_req *req,
+			     struct packet_struct **ppacket);
+
+#endif
diff --git a/source3/nmbd/nmbd_packets.c b/source3/nmbd/nmbd_packets.c
index de5ae1efef1..2b7cc82f341 100644
--- a/source3/nmbd/nmbd_packets.c
+++ b/source3/nmbd/nmbd_packets.c
@@ -24,6 +24,7 @@
 #include "../lib/util/select.h"
 #include "system/select.h"
 #include "libsmb/libsmb.h"
+#include "libsmb/unexpected.h"
 
 extern int ClientNMB;
 extern int ClientDGRAM;
-- 
2.11.0


From 1883b77e8f951991708760d9b0b830361920428c Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Tue, 16 Jan 2018 15:07:47 +0100
Subject: [PATCH 2/8] libnmb: Remove a pointless struct member

Signed-off-by: Volker Lendecke <vl at samba.org>
---
 source3/libsmb/unexpected.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/source3/libsmb/unexpected.c b/source3/libsmb/unexpected.c
index 96de1445a67..cf531c00434 100644
--- a/source3/libsmb/unexpected.c
+++ b/source3/libsmb/unexpected.c
@@ -481,7 +481,6 @@ struct nb_packet_reader_state {
 	struct nb_packet_query query;
 	const char *mailslot_name;
 	struct iovec iov[2];
-	char c;
 	struct nb_packet_reader *reader;
 };
 
@@ -602,7 +601,7 @@ static void nb_packet_reader_sent_query(struct tevent_req *subreq)
 	}
 	subreq = tstream_read_packet_send(state, state->ev,
 					  state->reader->sock,
-					  sizeof(state->c), NULL, NULL);
+					  1, NULL, NULL);
 	if (tevent_req_nomem(subreq, req)) {
 		return;
 	}
@@ -627,9 +626,8 @@ static void nb_packet_reader_got_ack(struct tevent_req *subreq)
 		tevent_req_nterror(req, map_nt_error_from_unix(err));
 		return;
 	}
-	if (nread != sizeof(state->c)) {
-		DEBUG(10, ("read = %d, expected %d\n", (int)nread,
-			   (int)sizeof(state->c)));
+	if (nread != 1) {
+		DBG_DEBUG("read = %zd, expected 1\n", nread);
 		tevent_req_nterror(req, NT_STATUS_UNEXPECTED_IO_ERROR);
 		return;
 	}
-- 
2.11.0


From 6e66081a7937106f010ec5fc6f8c36196c502da2 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Tue, 16 Jan 2018 15:04:06 +0100
Subject: [PATCH 3/8] libnmb: tsocket_address_unix_from_path deals fine with
 NULL

Other callers use NULL instead of "". Streamline it a bit

Signed-off-by: Volker Lendecke <vl at samba.org>
---
 source3/libsmb/unexpected.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/source3/libsmb/unexpected.c b/source3/libsmb/unexpected.c
index cf531c00434..b2211dd98bf 100644
--- a/source3/libsmb/unexpected.c
+++ b/source3/libsmb/unexpected.c
@@ -520,7 +520,7 @@ struct tevent_req *nb_packet_reader_send(TALLOC_CTX *mem_ctx,
 		return tevent_req_post(req, ev);
 	}
 
-	ret = tsocket_address_unix_from_path(state, "", &laddr);
+	ret = tsocket_address_unix_from_path(state, NULL, &laddr);
 	if (ret != 0) {
 		tevent_req_nterror(req, map_nt_error_from_unix(errno));
 		return tevent_req_post(req, ev);
-- 
2.11.0


From 48e8b3d4f5697b17a1b3e32dc63d68c173e92654 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Thu, 18 Jan 2018 13:28:30 +0100
Subject: [PATCH 4/8] libnmb: Fix two signed/unsigned hickups

Two warnings less

Signed-off-by: Volker Lendecke <vl at samba.org>
---
 source3/libsmb/unexpected.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/source3/libsmb/unexpected.c b/source3/libsmb/unexpected.c
index b2211dd98bf..16d1f677b94 100644
--- a/source3/libsmb/unexpected.c
+++ b/source3/libsmb/unexpected.c
@@ -257,7 +257,8 @@ static void nb_packet_got_query(struct tevent_req *req)
 	/* Take care of alignment */
 	memcpy(&q, buf, sizeof(q));
 
-	if (nread != sizeof(struct nb_packet_query) + q.mailslot_namelen) {
+	if ((size_t)nread !=
+	    sizeof(struct nb_packet_query) + q.mailslot_namelen) {
 		DEBUG(10, ("nb_packet_got_query: Invalid mailslot namelength\n"));
 		TALLOC_FREE(client);
 		return;
@@ -595,7 +596,8 @@ static void nb_packet_reader_sent_query(struct tevent_req *subreq)
 		tevent_req_nterror(req, map_nt_error_from_unix(err));
 		return;
 	}
-	if (written != sizeof(state->query) + state->query.mailslot_namelen) {
+	if ((size_t)written !=
+	    sizeof(state->query) + state->query.mailslot_namelen) {
 		tevent_req_nterror(req, NT_STATUS_UNEXPECTED_IO_ERROR);
 		return;
 	}
-- 
2.11.0


From b2d1ac5f0dad378e1985bde4f68e7da9ad93ad00 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Fri, 5 Jan 2018 17:11:43 +0100
Subject: [PATCH 5/8] dsgetdcname: Fix a signed/unsigned hickup

Signed-off-by: Volker Lendecke <vl at samba.org>
---
 source3/libsmb/dsgetdcname.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/source3/libsmb/dsgetdcname.c b/source3/libsmb/dsgetdcname.c
index ce0cc89899c..f15456a8f4a 100644
--- a/source3/libsmb/dsgetdcname.c
+++ b/source3/libsmb/dsgetdcname.c
@@ -500,7 +500,8 @@ static NTSTATUS discover_dc_dns(TALLOC_CTX *mem_ctx,
 				struct ip_service_name **returned_dclist,
 				int *return_count)
 {
-	int i, j;
+	int i;
+	size_t j;
 	NTSTATUS status;
 	struct dns_rr_srv *dcs = NULL;
 	int numdcs = 0;
-- 
2.11.0


From 55efb0fbb48a71ab2422d15db1f42f9c651abb09 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Sat, 13 Jan 2018 17:38:16 +0100
Subject: [PATCH 6/8] libcli/resolve: Fix typos

Signed-off-by: Volker Lendecke <vl at samba.org>
---
 source4/libcli/resolve/lmhosts.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/source4/libcli/resolve/lmhosts.c b/source4/libcli/resolve/lmhosts.c
index 21cc3e4f00b..9062da91881 100644
--- a/source4/libcli/resolve/lmhosts.c
+++ b/source4/libcli/resolve/lmhosts.c
@@ -1,7 +1,7 @@
 /*
    Unix SMB/CIFS implementation.
 
-   broadcast name resolution module
+   lmhosts name resolution module
 
    Copyright (C) Andrew Tridgell 1994-1998,2005
    Copyright (C) Jeremy Allison 2007
@@ -38,7 +38,7 @@ struct resolve_lmhosts_state {
 };
 
 /**
-  broadcast name resolution method - async send
+  lmhosts name resolution method - async send
  */
 /*
   general name resolution - async send
-- 
2.11.0


From f51995ae9d28b0b80e8437aa13bcf6577a6eae3b Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Sat, 13 Jan 2018 17:39:24 +0100
Subject: [PATCH 7/8] libcli/resolve: Make functions static

Signed-off-by: Volker Lendecke <vl at samba.org>
---
 source4/libcli/resolve/lmhosts.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/source4/libcli/resolve/lmhosts.c b/source4/libcli/resolve/lmhosts.c
index 9062da91881..400cf79f68b 100644
--- a/source4/libcli/resolve/lmhosts.c
+++ b/source4/libcli/resolve/lmhosts.c
@@ -43,11 +43,12 @@ struct resolve_lmhosts_state {
 /*
   general name resolution - async send
  */
-struct composite_context *resolve_name_lmhosts_send(TALLOC_CTX *mem_ctx,
-						  struct tevent_context *event_ctx,
-						  void *userdata, uint32_t flags,
-						  uint16_t port,
-						  struct nbt_name *name)
+static struct composite_context *resolve_name_lmhosts_send(
+	TALLOC_CTX *mem_ctx,
+	struct tevent_context *event_ctx,
+	void *userdata, uint32_t flags,
+	uint16_t port,
+	struct nbt_name *name)
 {
 	struct composite_context *c;
 	struct resolve_lmhosts_state *state;
@@ -101,10 +102,10 @@ struct composite_context *resolve_name_lmhosts_send(TALLOC_CTX *mem_ctx,
 /*
   general name resolution method - recv side
  */
-NTSTATUS resolve_name_lmhosts_recv(struct composite_context *c,
-				 TALLOC_CTX *mem_ctx,
-				 struct socket_address ***addrs,
-				 char ***names)
+static NTSTATUS resolve_name_lmhosts_recv(struct composite_context *c,
+					  TALLOC_CTX *mem_ctx,
+					  struct socket_address ***addrs,
+					  char ***names)
 {
 	NTSTATUS status;
 
-- 
2.11.0


From 86dd87ab9613d663c6bd41726e2f4fb1db791086 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Sat, 13 Jan 2018 17:41:01 +0100
Subject: [PATCH 8/8] libcli/resolve: Make functions static

Signed-off-by: Volker Lendecke <vl at samba.org>
---
 source4/libcli/resolve/bcast.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/source4/libcli/resolve/bcast.c b/source4/libcli/resolve/bcast.c
index 787d048a684..277a82d80e2 100644
--- a/source4/libcli/resolve/bcast.c
+++ b/source4/libcli/resolve/bcast.c
@@ -35,11 +35,12 @@ struct resolve_bcast_data {
 /**
   broadcast name resolution method - async send
  */
-struct composite_context *resolve_name_bcast_send(TALLOC_CTX *mem_ctx, 
-						  struct tevent_context *event_ctx,
-						  void *userdata, uint32_t flags,
-						  uint16_t port,
-						  struct nbt_name *name)
+static struct composite_context *resolve_name_bcast_send(
+	TALLOC_CTX *mem_ctx,
+	struct tevent_context *event_ctx,
+	void *userdata, uint32_t flags,
+	uint16_t port,
+	struct nbt_name *name)
 {
 	int num_interfaces;
 	const char **address_list;
@@ -85,10 +86,10 @@ struct composite_context *resolve_name_bcast_send(TALLOC_CTX *mem_ctx,
 /*
   broadcast name resolution method - recv side
  */
-NTSTATUS resolve_name_bcast_recv(struct composite_context *c, 
-				 TALLOC_CTX *mem_ctx,
-				 struct socket_address ***addrs,
-				 char ***names)
+static NTSTATUS resolve_name_bcast_recv(struct composite_context *c,
+					TALLOC_CTX *mem_ctx,
+					struct socket_address ***addrs,
+					char ***names)
 {
 	NTSTATUS status = resolve_name_nbtlist_recv(c, mem_ctx, addrs, names);
 	if (NT_STATUS_EQUAL(status, NT_STATUS_IO_TIMEOUT)) {
-- 
2.11.0



More information about the samba-technical mailing list