summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/modules/vfs_expand_msdfs.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/source3/modules/vfs_expand_msdfs.c b/source3/modules/vfs_expand_msdfs.c
index 2d9bd4fd90..9fe9ef4a31 100644
--- a/source3/modules/vfs_expand_msdfs.c
+++ b/source3/modules/vfs_expand_msdfs.c
@@ -36,7 +36,8 @@
This is to redirect a DFS client to a host close to it.
***********************************************************/
-static char *read_target_host(TALLOC_CTX *ctx, const char *mapfile)
+static char *read_target_host(TALLOC_CTX *ctx, const char *mapfile,
+ const char *clientaddr)
{
XFILE *f;
char buf[1024];
@@ -54,7 +55,6 @@ static char *read_target_host(TALLOC_CTX *ctx, const char *mapfile)
DEBUG(10, ("Scanning mapfile [%s]\n", mapfile));
while (x_fgets(buf, sizeof(buf), f) != NULL) {
- char addr[INET6_ADDRSTRLEN];
if ((strlen(buf) > 0) && (buf[strlen(buf)-1] == '\n'))
buf[strlen(buf)-1] = '\0';
@@ -70,8 +70,7 @@ static char *read_target_host(TALLOC_CTX *ctx, const char *mapfile)
*space = '\0';
- if (strncmp(client_addr(smbd_server_fd(),addr,sizeof(addr)),
- buf, strlen(buf)) == 0) {
+ if (strncmp(clientaddr, buf, strlen(buf)) == 0) {
found = true;
break;
}
@@ -114,6 +113,7 @@ static char *expand_msdfs_target(TALLOC_CTX *ctx,
int filename_len = 0;
char *targethost = NULL;
char *new_target = NULL;
+ char addr[INET6_ADDRSTRLEN];
if (filename_start == NULL) {
DEBUG(10, ("No filename start in %s\n", target));
@@ -136,7 +136,10 @@ static char *expand_msdfs_target(TALLOC_CTX *ctx,
DEBUG(10, ("Expanding from table [%s]\n", mapfilename));
- if ((targethost = read_target_host(ctx, mapfilename)) == NULL) {
+ targethost = read_target_host(
+ ctx, client_addr(smbd_server_fd(), addr, sizeof(addr)),
+ mapfilename);
+ if (targethost == NULL) {
DEBUG(1, ("Could not expand target host from file %s\n",
mapfilename));
return NULL;