Fix the problem when -L is used with IPv6 addresses. Don't try to
authorJeremy Allison <jra@samba.org>
Thu, 17 Apr 2008 16:24:54 +0000 (09:24 -0700)
committerJeremy Allison <jra@samba.org>
Thu, 17 Apr 2008 16:24:54 +0000 (09:24 -0700)
connect on port 139 with IPv6. Found by David Holder @ Erion.
Karolin please merge to 3.2-stable.
Jeremy.

source/client/client.c

index 882ed4dbdd88e07b6a54aa4de23126dc9e9e9471..276ffb93d8c9ce34c610f852efb009d1c3ff733a 100644 (file)
@@ -4514,6 +4514,8 @@ static int process(const char *base_directory)
 
 static int do_host_query(const char *query_host)
 {
+       struct sockaddr_storage ss;
+
        cli = cli_cm_open(talloc_tos(), NULL,
                        query_host, "IPC$", true, smb_encrypt);
        if (!cli)
@@ -4521,6 +4523,12 @@ static int do_host_query(const char *query_host)
 
        browse_host(true);
 
+       if (interpret_string_addr(&ss, query_host, 0) && (ss.ss_family != AF_INET)) {
+               d_printf("%s is an IPv6 address -- no workgroup available\n",
+                       query_host);
+               return 1;
+       }
+
        if (port != 139) {
 
                /* Workgroups simply don't make sense over anything