summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2004-09-22 23:50:28 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:59:04 -0500
commit79ae828819193dd9ed5e060f78a88752e30bd1c3 (patch)
tree81ac23f5eb10cb52ef081be59723a8c28fa46d51
parent3fb57e31a0f1e4851dcd1f4e6d87fc320f6fa703 (diff)
downloadsamba-79ae828819193dd9ed5e060f78a88752e30bd1c3.tar.gz
samba-79ae828819193dd9ed5e060f78a88752e30bd1c3.tar.bz2
samba-79ae828819193dd9ed5e060f78a88752e30bd1c3.zip
r2542: I really don't like the 'substitute' code, and I particularly don't
like it in the mainline code (outside the smb.conf magic). We will need to have a more useful 'helper' routine for this, but for now we at least get a reliable IP address. Also remove the unused 'socket' structure in the smb server - it seems to have been replaced by the socket library. Andrew Bartlett (This used to be commit d8fd19a2020da6cce691c0db2b00f42e31d672cc)
-rw-r--r--source4/lib/substitute.c25
-rw-r--r--source4/smb_server/service.c3
-rw-r--r--source4/smb_server/sesssetup.c19
-rw-r--r--source4/smb_server/smb_server.c7
-rw-r--r--source4/smb_server/smb_server.h18
5 files changed, 22 insertions, 50 deletions
diff --git a/source4/lib/substitute.c b/source4/lib/substitute.c
index 7d3997ecd7..3de2966f56 100644
--- a/source4/lib/substitute.c
+++ b/source4/lib/substitute.c
@@ -52,18 +52,6 @@ static void setup_string(char **dest, const char *str)
(*dest) = s;
}
-void sub_set_local_machine(const char *local_machine)
-{
- if (!sub) return;
- setup_string(&sub->local_machine, local_machine);
-}
-
-void sub_set_remote_machine(const char *remote_machine)
-{
- if (!sub) return;
- setup_string(&sub->remote_machine, remote_machine);
-}
-
void sub_set_remote_proto(const char *str)
{
if (!sub) return;
@@ -76,19 +64,6 @@ void sub_set_remote_arch(const char *str)
setup_string(&sub->remote_arch, str);
}
-const char *sub_get_remote_machine(void)
-{
- if (!sub) return "UNKNOWN";
- return sub->remote_machine;
-}
-
-const char *sub_get_local_machine(void)
-{
- if (!sub) return "UNKNOWN";
- return sub->local_machine;
-}
-
-
/*
setup the string used by %U substitution
*/
diff --git a/source4/smb_server/service.c b/source4/smb_server/service.c
index 843b0a3872..275e625386 100644
--- a/source4/smb_server/service.c
+++ b/source4/smb_server/service.c
@@ -218,8 +218,7 @@ static NTSTATUS make_connection(struct smbsrv_request *req,
snum = find_service(service);
if (snum == -1) {
- DEBUG(0,("%s couldn't find service %s\n",
- sub_get_remote_machine(), service));
+ DEBUG(0,("couldn't find service %s\n", service));
return NT_STATUS_BAD_NETWORK_NAME;
}
diff --git a/source4/smb_server/sesssetup.c b/source4/smb_server/sesssetup.c
index 88777d9673..f9b2eee1b2 100644
--- a/source4/smb_server/sesssetup.c
+++ b/source4/smb_server/sesssetup.c
@@ -45,14 +45,23 @@ static NTSTATUS sesssetup_old(struct smbsrv_request *req, union smb_sesssetup *s
struct auth_serversupplied_info *server_info = NULL;
struct auth_session_info *session_info;
+ TALLOC_CTX *mem_ctx = talloc_init("NT1 session setup");
+ char *remote_machine;
+ if (!mem_ctx) {
+ return NT_STATUS_NO_MEMORY;
+ }
+
if (!req->smb_conn->negotiate.done_sesssetup) {
req->smb_conn->negotiate.max_send = sess->old.in.bufsize;
}
-
+
+ remote_machine = socket_get_peer_addr(req->smb_conn->connection->socket, mem_ctx);
status = make_user_info_for_reply_enc(&user_info,
sess->old.in.user, sess->old.in.domain,
+ remote_machine,
sess->old.in.password,
data_blob(NULL, 0));
+ talloc_free(mem_ctx);
if (!NT_STATUS_IS_OK(status)) {
return NT_STATUS_ACCESS_DENIED;
}
@@ -122,10 +131,18 @@ static NTSTATUS sesssetup_nt1(struct smbsrv_request *req, union smb_sesssetup *s
free_auth_context(&auth_context);
} else {
+ TALLOC_CTX *mem_ctx = talloc_init("NT1 session setup");
+ char *remote_machine;
+ if (!mem_ctx) {
+ return NT_STATUS_NO_MEMORY;
+ }
+ remote_machine = socket_get_peer_addr(req->smb_conn->connection->socket, mem_ctx);
status = make_user_info_for_reply_enc(&user_info,
sess->nt1.in.user, sess->nt1.in.domain,
+ remote_machine,
sess->nt1.in.password1,
sess->nt1.in.password2);
+ talloc_free(mem_ctx);
if (!NT_STATUS_IS_OK(status)) {
return NT_STATUS_ACCESS_DENIED;
}
diff --git a/source4/smb_server/smb_server.c b/source4/smb_server/smb_server.c
index 13c0a9770f..35c552c825 100644
--- a/source4/smb_server/smb_server.c
+++ b/source4/smb_server/smb_server.c
@@ -838,13 +838,6 @@ void smbsrv_accept(struct server_connection *conn)
sub_set_context(&smb_conn->substitute);
- /* set an initial client name based on its IP address. This will be replaced with
- the netbios name later if it gives us one */
- socket_addr = socket_get_peer_addr(conn->socket, smb_conn);
- if (socket_addr) {
- sub_set_remote_machine(socket_addr);
- }
-
/* now initialise a few default values associated with this smb socket */
smb_conn->negotiate.max_send = 0xFFFF;
diff --git a/source4/smb_server/smb_server.h b/source4/smb_server/smb_server.h
index e69cf65c8c..59fb03ea2e 100644
--- a/source4/smb_server/smb_server.h
+++ b/source4/smb_server/smb_server.h
@@ -168,21 +168,9 @@ struct substitute_context {
* information associated with a SMB server connection
*/
struct smbsrv_connection {
- /* this is the context for a SMB socket associated with the socket itself */
- struct {
- /* the open file descriptor */
- int fd;
-
- /* the last read error on the socket, if any (replaces smb_read_error global) */
- int read_error;
-
- /* a count of the number of packets we have received. We
- * actually only care about zero/non-zero at this stage */
- unsigned pkt_count;
-
- /* the network address of the client */
- char *client_addr;
- } socket;
+ /* a count of the number of packets we have received. We
+ * actually only care about zero/non-zero at this stage */
+ unsigned pkt_count;
/* context that has been negotiated between the client and server */
struct {