diff -urN ncat-0.10rc3/ncat_main.c ncat-0.10rc3-fixed/ncat_main.c --- ncat-0.10rc3/ncat_main.c 2006-01-10 03:29:08.000000000 +0300 +++ ncat-0.10rc3-fixed/ncat_main.c 2007-07-09 09:58:58.000000000 +0400 @@ -23,6 +23,7 @@ { struct sockaddr_in ss; struct sockaddr_in6 ss6; + struct sockaddr_storage sst; struct conn_state cs; @@ -271,7 +272,7 @@ } /* resolve hostname */ - if (!resolve(argv[optind], (struct sockaddr_storage *) &ss)) { + if (!resolve(argv[optind], (struct sockaddr_storage *) &sst)) { /* host failed to resolve :( */ fprintf(stderr, "%s: Could not resolve target hostname %s. QUITTING.\n", @@ -297,6 +298,8 @@ /* IPv6 connect() */ if (oipv == 6) { + memcpy(&ss6,&sst,sizeof(ss6)); + ss6.sin6_family = AF_INET6; ss_len = sizeof(struct sockaddr_in6); @@ -329,6 +332,8 @@ } /* IPv4 connect() - default. */ else { + memcpy(&ss,&sst,sizeof(ss)); + ss.sin_family = AF_INET; ss_len = sizeof(struct sockaddr_in);