Package: tcputils
Version: 0.6.2-6
Severity: important
Tags: patch

The 64-bit binary of "tcpconnect" is failing to connect when given a
hostname, reporting "Network is unreachable".  It works fine when given an
ip address.  It appears this is because the code in
ip/tcp_open.c:tcp_open() is comparing the result of a call to inet_addr()
with "(unsigned long)-1)" where I'm thinking it should be comparing instead
to "INADDR_NONE" according to the docs for inet_addr I found on the web (I
didn't seem to have a manpage for inet_addr on the debian box).  There
might well be other parts of the code that have issues with 64-bit, though.

-- System Information:
Debian Release: 4.0
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: amd64 (x86_64)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.16.29-xen
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)

Versions of packages tcputils depends on:
ii  libc6                  2.3.6.ds1-13etch2 GNU C Library: Shared libraries

tcputils recommends no packages.

-- no debconf information
--- tcputils-0.6.2/ip/tcp_open.c.orig	1996-07-04 10:44:56.000000000 -0400
+++ tcputils-0.6.2/ip/tcp_open.c	2007-12-13 15:21:05.000000000 -0500
@@ -65,7 +65,7 @@
 
     /* Check for numerical IP address */
     server.sin_addr.s_addr = inet_addr(remote_host);
-    if (server.sin_addr.s_addr != (unsigned long)-1)
+    if (server.sin_addr.s_addr != INADDR_NONE)
     {
 	if (connect(s, (struct sockaddr*)&server, sizeof server) < 0)
 	    ERRORRET(-1);

Reply via email to