Debian Bug report logs - #11300
netstd: rlogin: Connection refused

version graph

Package: libc6; Maintainer for libc6 is GNU Libc Maintainers <debian-glibc@lists.debian.org>; Source for libc6 is src:glibc (PTS, buildd, popcon).

Reported by: Christoph Lameter <clameter@fuller.edu>

Date: Tue, 15 Jul 1997 19:18:04 UTC

Severity: normal

Fixed in version glibc/2.1.94-1

Done: Ben Collins <bcollins@debian.org>

Bug is archived. No further changes may be made.

Toggle useless messages

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to debian-bugs-dist@lists.debian.org, Peter Tobias <tobias@et-inf.fho-emden.de>:
Bug#11300; Package netstd. (full text, mbox, link).


Acknowledgement sent to Christoph Lameter <clameter@fuller.edu>:
New bug report received and forwarded. Copy sent to Peter Tobias <tobias@et-inf.fho-emden.de>. (full text, mbox, link).


Message #5 received at submit@bugs.debian.org (full text, mbox, reply):

From: Christoph Lameter <clameter@fuller.edu>
To: submit@bugs.debian.org
Subject: netstd: rlogin: Connection refused
Date: Tue, 15 Jul 1997 12:13:50 -0700
Package: netstd
Version: 2.13-1

Since a long time I am running a specially patched rlogin version for one of our
hosts which redirects incoming calls from serial ports to a shell server. I had hoped that
1.3.X would cure it but I got the same complaints again about connections not being
established.

I am running a special rcmd.c linked into rlogin which I got from Miquel a while back.
He said that he hoped the fixes would make it into a future libc version. Seems that they
did not. The trouble is with a port being blocked somehow and rlogin always hitting on
the same port on retries. I have had this lots of times also on my home setup where I just
abort the attempt and retry which usually makes it work.

/*
 * Copyright (c) 1983, 1993, 1994
 *	The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *	This product includes software developed by the University of
 *	California, Berkeley and its contributors.
 * 4. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */

#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)rcmd.c	8.3 (Berkeley) 3/26/94";
#endif /* LIBC_SCCS and not lint */

#include "inetprivate.h"
#include <paths.h>
#include <pwd.h>
#include <sys/file.h>
#include <sys/signal.h>
#include <sys/stat.h>

#if NLS
#include "nl_types.h"
#endif

#ifdef YP
#include <rpcsvc/ypclnt.h>
extern void setnetgrent(const char *);
extern void endnetgrent(void);
extern int getnetgrent(char **, char **, char **);
static char *nisdomain = NULL;
static int __ichecknetgrouphost(u_long, const char *);
static int _checknetgroupuser(const char *, const char *);
#endif

int
rcmd(ahost, rport, locuser, remuser, cmd, fd2p)
	char **ahost;
	u_short rport;
	const char *locuser, *remuser, *cmd;
	int *fd2p;
{
	struct hostent *hp;
	struct sockaddr_in sin, from;
	fd_set reads;
#ifdef _POSIX_SOURCE
	sigset_t set, oset;
#else
	long oldmask;
#endif
	int s, lport, timo;
#ifdef F_SETOWN
	pid_t pid;
#endif
	char c;
#ifdef __linux__
	int retries = 0;
#endif

#if NLS
	libc_nls_init();
#endif

#ifdef F_SETOWN
	pid = getpid();
#endif
	hp = gethostbyname(*ahost);
	if (hp == 0) {
#if NLS
		fprintf(stderr, "%s: %s\n", *ahost,
                              catgets(_libc_cat, HerrorListSet,
				      2, "unknown host"));
#else
		fprintf(stderr, "%s: unknown host\n", *ahost);
#endif
		return (-1);
	}
	*ahost = hp->h_name;
#ifdef SIGURG
#ifdef _POSIX_SOURCE
	sigemptyset (&set);
	sigaddset (&set, SIGURG);
	sigprocmask (SIG_BLOCK, &set, &oset);
#else
	oldmask = sigblock(sigmask(SIGURG));
#endif
#endif
	for (timo = 1, lport = IPPORT_RESERVED - 1;;) {
		s = rresvport(&lport);
		if (s < 0) {
			if (errno == EAGAIN)
#if NLS
				fprintf(stderr, "socket: %s\n",
					catgets(_libc_cat, NetMiscSet,
						NetMiscAllPortsInUse,
						"All ports in use"));
#else
				fprintf(stderr, "socket: All ports in use\n");
#endif
			else
#if NLS
				perror(catgets(_libc_cat, NetMiscSet,
					       NetMiscRcmdSocket,
					       "rcmd: socket"));
#else
				perror("rcmd: socket");
#endif
#ifdef SIGURG
#ifdef _POSIX_SOURCE
			 sigprocmask (SIG_SETMASK, &oset,
				(sigset_t *)NULL);
#else
			sigsetmask(oldmask);
#endif
#endif
			return (-1);
		}
#ifdef F_SETOWN
		fcntl(s, F_SETOWN, pid);
#endif
		sin.sin_family = hp->h_addrtype;
		bcopy(hp->h_addr_list[0], (caddr_t)&sin.sin_addr, hp->h_length);
		sin.sin_port = rport;
		if (connect(s, (struct sockaddr *)&sin, sizeof (sin)) >= 0)
			break;
		(void) close(s);
		if (errno == EADDRINUSE) {
			lport--;
			continue;
		}
#ifdef __linux__
		/*
		 *	EADDRINUSE on ICMP level is ECONNREFUSED
		 *	 -- miquels@cistron.nl
		 */
		if (errno == ECONNREFUSED && retries < 16) {
			lport--;
			retries++;
			continue;
		}
		retries = 0;
#endif
		if (errno == ECONNREFUSED && timo <= 16) {
			sleep(timo);
			timo *= 2;
			continue;
		}
		if (hp->h_addr_list[1] != NULL) {
			int oerrno = errno;

			fprintf(stderr,
#if NLS
				"%s %s: ", catgets(_libc_cat, NetMiscSet,
						   NetMiscAllPortsInUse,
						   "connect to address"),
					   inet_ntoa(sin.sin_addr));

#else

			    "connect to address %s: ", inet_ntoa(sin.sin_addr));
#endif
			errno = oerrno;
			perror(0);
			hp->h_addr_list++;
			bcopy(hp->h_addr_list[0], (caddr_t)&sin.sin_addr,
			    hp->h_length);

#if NLS
			fprintf(stderr, catgets(_libc_cat, NetMiscSet,
						NetMiscTrying,
						"Trying %s...\n"),
#else
			fprintf(stderr,	"Trying %s...\n",
#endif
				inet_ntoa(sin.sin_addr));
			continue;
		}
		perror(hp->h_name);
#ifdef SIGURG
#ifdef _POSIX_SOURCE
		sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL);
#else
		sigsetmask(oldmask);
#endif
#endif
		return (-1);
	}
	lport--;
	if (fd2p == 0) {
		write(s, "", 1);
		lport = 0;
	} else {
		char num[8];
		int s2 = rresvport(&lport), s3;
		int len = sizeof (from);

		if (s2 < 0)
			goto bad;
		listen(s2, 1);
		(void) sprintf(num, "%d", lport);
		/* void) snprintf(num, sizeof(num), "%d", lport); XXX */
		if (write(s, num, strlen(num)+1) != strlen(num)+1) {
#if NLS
			perror(catgets(_libc_cat, NetMiscSet,
				       NetMiscSettingUpStderr,
				       "write: setting up stderr"));
#else
			perror("write: setting up stderr");
#endif
			(void) close(s2);
			goto bad;
		}
		FD_ZERO(&reads);
		FD_SET(s, &reads);
		FD_SET(s2, &reads);
		errno = 0;
		if (select(1 + (s > s2 ? s : s2), &reads, 0, 0, 0) < 1 ||
		    !FD_ISSET(s2, &reads)) {
			if (errno != 0)
#if NLS
				perror(catgets(_libc_cat, NetMiscSet,
					       NetMiscSelectSetup,
					       "rcmd: select (setting up stderr)"));
#else
				perror("rcmd: select (setting up stderr): ");
#endif
			else
				fprintf(stderr,
#if NLS
				        "%s\n",
				        catgets(_libc_cat, NetMiscSet,
						NetMiscRcmdProtocolError,
						"select: protocol failure in circuit setup"));
#else
					"select: protocol failure in circuit setup.\n");
#endif
			(void)close(s2);
			goto bad;
		}
		s3 = accept(s2, (struct sockaddr *)&from, &len);
		(void) close(s2);
		if (s3 < 0) {
#if NLS
			perror(catgets(_libc_cat, NetMiscSet,
				       NetMiscAccept,
				       "accept"));
#else
			perror("accept");
#endif
			lport = 0;
			goto bad;
		}
		*fd2p = s3;
		from.sin_port = ntohs((u_short)from.sin_port);
		if (from.sin_family != AF_INET ||
		    from.sin_port >= IPPORT_RESERVED ||
		    from.sin_port < IPPORT_RESERVED / 2) {
			fprintf(stderr,
#if NLS
				"%s\n",
				catgets(_libc_cat, NetMiscSet,
					NetMiscProtocolFailure,
					"socket: protocol failure in circuit setup."));
#else
			    "socket: protocol failure in circuit setup.\n");
#endif
			goto bad2;
		}
	}
	(void) write(s, locuser, strlen(locuser)+1);
	(void) write(s, remuser, strlen(remuser)+1);
	(void) write(s, cmd, strlen(cmd)+1);
	if (read(s, &c, 1) != 1) {
		perror(*ahost);
		goto bad2;
	}
	if (c != 0) {
		while (read(s, &c, 1) == 1) {
			(void) write(STDERR_FILENO, &c, 1);
			if (c == '\n')
				break;
		}
		goto bad2;
	}
#ifdef SIGURG
#ifdef _POSIX_SOURCE
	sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL);
#else
	sigsetmask(oldmask);
#endif
#endif
	return (s);
bad2:
	if (lport)
		(void) close(*fd2p);
bad:
	(void) close(s);
#ifdef SIGURG
#ifdef _POSIX_SOURCE
	sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL);
#else
	sigsetmask(oldmask);
#endif
#endif
	return (-1);
}

int
rresvport(alport)
	int *alport;
{
	struct sockaddr_in sin;
	int s;

	sin.sin_family = AF_INET;
	sin.sin_addr.s_addr = INADDR_ANY;
	s = socket(AF_INET, SOCK_STREAM, 0);
	if (s < 0)
		return (-1);
	for (;;) {
		sin.sin_port = htons((u_short)*alport);
		if (bind(s, (struct sockaddr *)&sin, sizeof (sin)) >= 0)
			return (s);
		if (errno != EADDRINUSE) {
			(void) close(s);
			return (-1);
		}
		(*alport)--;
		if (*alport == IPPORT_RESERVED/2) {
			(void) close(s);
			errno = EAGAIN;		/* close */
			return (-1);
		}
	}
}

int     __check_rhosts_file = 1;
char    *__rcmd_errstr;

int
ruserok(const char *rhost, int superuser, const char *ruser,
	const char *luser)
{
	struct hostent *hp;
	u_long addr;
	char **ap;

	if ((hp = gethostbyname(rhost)) == NULL)
		return (-1);
	for (ap = hp->h_addr_list; *ap; ++ap) {
		bcopy(*ap, &addr, sizeof(addr));
		if (iruserok(addr, superuser, ruser, luser) == 0)
			return (0);
	}
	return (-1);
}

/*
 * New .rhosts strategy: We are passed an ip address. We spin through
 * hosts.equiv and .rhosts looking for a match. When the .rhosts only
 * has ip addresses, we don't have to trust a nameserver.  When it
 * contains hostnames, we spin through the list of addresses the nameserver
 * gives us and look for a match.
 *
 * Returns 0 if ok, -1 if not ok.
 */
int
iruserok(u_long raddr, int superuser, const char *ruser, const char *luser)
{
	register char *cp;
	struct stat sbuf;
	struct passwd *pwd;
	FILE *hostf;
	uid_t uid;
	int first = 1;
	char pbuf[MAXPATHLEN];

	first = 1;
	hostf = superuser ? NULL : fopen(_PATH_HEQUIV, "r");
again:
	if (hostf) {
		if (__ivaliduser(hostf, raddr, luser, ruser) == 0) {
			(void) fclose(hostf);
			return(0);
		}
		(void) fclose(hostf);
	}
	if (first == 1 && (__check_rhosts_file || superuser)) {
		first = 0;
		if ((pwd = getpwnam(luser)) == NULL)
			return(-1);
		(void)strcpy(pbuf, pwd->pw_dir);
		(void)strcat(pbuf, "/.rhosts");

		/*
		 * Change effective uid while opening .rhosts.  If root and
		 * reading an NFS mounted file system, can't read files that
		 * are protected read/write owner only.
		 */
		uid = geteuid();
		(void)seteuid(pwd->pw_uid);
		hostf = fopen(pbuf, "r");
		(void)seteuid(uid);

		if (hostf == NULL)
			return(-1);
		/*
		 * If not a regular file, or is owned by someone other than
		 * user or root or if writeable by anyone but the owner, quit.
		 */
		cp = NULL;
		if (lstat(pbuf, &sbuf) < 0)
#if NLS
			cp = catgets(_libc_cat, NetMiscSet,
				     NetMiscRhostLstat,
				     ".rhosts not regular file");
#else
			cp = ".rhosts not regular file";
#endif
		else if (!S_ISREG(sbuf.st_mode))
#if NLS
			cp = catgets(_libc_cat, NetMiscSet,
				     NetMiscRhostNotRegular,
				     ".rhosts not regular file");
#else
			cp = ".rhosts not regular file";
#endif
		else if (fstat(fileno(hostf), &sbuf) < 0)
#if NLS
			cp = catgets(_libc_cat, NetMiscSet,
				     NetMiscRhostFstatFailed,
				     ".rhosts fstat failed");
#else
			cp = ".rhosts fstat failed";
#endif
		else if (sbuf.st_uid && sbuf.st_uid != pwd->pw_uid)
#if NLS
			cp = catgets(_libc_cat, NetMiscSet,
				     NetMiscBadRhostsOwner,
				     "bad .rhosts owner");
#else
			cp = "bad .rhosts owner";
#endif
		else if (sbuf.st_mode & (S_IWGRP|S_IWOTH))
#if NLS
			cp = catgets(_libc_cat, NetMiscSet,
				     NetMiscRhostWritable,
				     ".rhosts writeable by other than owner");
#else
			cp = ".rhosts writeable by other than owner";
#endif
		/* If there were any problems, quit. */
		if (cp) {
			__rcmd_errstr = cp;
			fclose(hostf);
			return(-1);
		}
		goto again;
	}
	return (-1);
}

/*
 * XXX
 * Don't make static, used by lpd(8).
 *
 * Returns 0 if ok, -1 if not ok.
 */
int
__ivaliduser(FILE *hostf, u_long raddr, const char *luser, const char *ruser)
{
	register char *user, *p;
	int ch;
	char buf[MAXHOSTNAMELEN + 128];		/* host + login */
#ifdef YP
	int hostvalid = 0;
	int uservalid = 0;
#endif

	while (fgets(buf, sizeof (buf), hostf)) {
		p = buf;
		/* Skip lines that are too long. */
		if (strchr(p, '\n') == NULL) {
			while ((ch = getc(hostf)) != '\n' && ch != EOF);
			continue;
		}
		while (*p != '\n' && *p != ' ' && *p != '\t' && *p != '\0') {
			/* *p = isupper(*p) ? tolower(*p) : *p;  -- Uli */
			*p = tolower(*p);	/* works for linux libc */
			p++;
		}
		if (*p == ' ' || *p == '\t') {
			*p++ = '\0';
			while (*p == ' ' || *p == '\t')
				p++;
			user = p;
			while (*p != '\n' && *p != ' ' &&
			    *p != '\t' && *p != '\0')
				p++;
		} else
			user = p;
		*p = '\0';
#ifdef YP
            /* disable host from -hostname entry */
        if ('-' == buf[0] && '@' != buf[1]
            && __icheckhost(raddr, &buf[1]))
          return -1;
            /* disable host from -@netgroup entry for host */
        if ('-' == buf[0] && '@' == buf[1] && '\0' != buf[2]
            && __ichecknetgrouphost(raddr, &buf[2]))
          return -1;
            /* disable user from -user entry */
        if ('\0' != *user && user[0] == '-' && user[1] != '@'
            && !strcmp(&user[1], ruser))
          return -1;
            /* disable user from -@netgroup entry for user */
        if ('\0' != *user && user[0] == '-' && user[1] == '@'
            && user[2] != '\0' && _checknetgroupuser(ruser, &user[2]))
          return -1;
            /* enable host from +@netgroup entry for host */
        if ('+' == buf[0] && '@' == buf[1] && '\0' != buf[2])
          hostvalid = __ichecknetgrouphost(raddr, &buf[2]);
        else
          hostvalid = __icheckhost(raddr, buf);
            /* enable user from +@netgroup entry for user */
        if ('\0' != *user && user[0] == '+'
            && user[1] == '@' && user[2] != '\0')
          uservalid = _checknetgroupuser(ruser, &user[2]);
        else
          uservalid = !strcmp(ruser, *user ? user : luser);
        
        if (hostvalid && uservalid)
          return 0;
#else
		if (__icheckhost(raddr, buf) &&
		    !strcmp(ruser, *user ? user : luser)) {
          		return (0);
		}
#endif /* YP */
	}
	return (-1);
}

/*
 * Returns "true" if match, 0 if no match.
 */
int
__icheckhost(u_long raddr, register char *lhost)
{
	register struct hostent *hp;
	register u_long laddr;
	register char **pp;

	/* Try for raw ip address first. */
	if (isdigit(*lhost) && (long)(laddr = inet_addr(lhost)) != -1)
		return (raddr == laddr);

	/* Better be a hostname. */
	if ((hp = gethostbyname(lhost)) == NULL)
		return (0);

	/* Spin through ip addresses. */
	for (pp = hp->h_addr_list; *pp; ++pp)
		if (!bcmp(&raddr, *pp, sizeof(u_long)))
			return (1);

	/* No match. */
	return (0);
}

#ifdef YP
static int
__ichecknetgrouphost(u_long raddr, const char *netgr)
{
  char *host, *user, *domain;
  int status;
  
  if (NULL == nisdomain)
    yp_get_default_domain(&nisdomain);
  
  setnetgrent(netgr);
  while (1)
    {
      while (1 == (status = getnetgrent(&host, &user, &domain))
             && NULL == host
             && NULL != domain
             && 0 != strcmp(domain, nisdomain))
        ;  /* find valid host entry */
      
      if (0 == status || NULL == host)
        {
          endnetgrent();
          return 0;
        }

      if(__icheckhost(raddr, host))
        {
          endnetgrent();
          return 1;
        }
    }
}

static int
_checknetgroupuser(const char *ruser, const char *netgr)
{
  char *host, *user, *domain;
  int status;
  
  if (NULL == nisdomain)
    yp_get_default_domain(&nisdomain);
  
  setnetgrent(netgr);
  while (1)
    {
      while (1 == (status = getnetgrent(&host, &user, &domain))
             && NULL == user
             && NULL != domain
             && 0 != strcmp(domain, nisdomain))
        ;  /* find valid user entry */
      
      if (0 == status || NULL == user)
        {
          endnetgrent();
          return 0;
        }

      if(0 == strcmp(ruser, user))
        {
          endnetgrent();
          return 1;
        }
    }
}
#endif /* YP */


-- System Information
Debian Release: 1.3
Kernel Version: Linux hur 2.0.29 #23 Fri Mar 7 09:58:52 PST 1997 i586 unknown

Versions of the packages netstd depends on:
cpp	Version: 2.7.2.1-8
libc5	Version: 5.4.23-3
libreadline2	Version: 2.1-2
ncurses3.0	Version: 1.9.9e-1
netbase	Version: 2.13-1



Information forwarded to debian-bugs-dist@lists.debian.org:
Bug#11300; Package netstd. (full text, mbox, link).


Acknowledgement sent to Peter Tobias <tobias@et-inf.fho-emden.de>:
Extra info received and forwarded to list. (full text, mbox, link).


Message #10 received at 11300@bugs.debian.org (full text, mbox, reply):

From: Peter Tobias <tobias@et-inf.fho-emden.de>
To: Christoph Lameter <clameter@fuller.edu>, 11300@bugs.debian.org
Subject: Re: Bug#11300: netstd: rlogin: Connection refused
Date: Tue, 15 Jul 1997 23:42:06 +0200
On Jul 15, Christoph Lameter wrote:
> Package: netstd
> Version: 2.13-1
> 
> Since a long time I am running a specially patched rlogin version for one of our
> hosts which redirects incoming calls from serial ports to a shell server. I had hoped that
> 1.3.X would cure it but I got the same complaints again about connections not being
> established.
> 
> I am running a special rcmd.c linked into rlogin which I got from Miquel a while back.
> He said that he hoped the fixes would make it into a future libc version. Seems that they
> did not. The trouble is with a port being blocked somehow and rlogin always hitting on
> the same port on retries. I have had this lots of times also on my home setup where I just
> abort the attempt and retry which usually makes it work.

Why do you report it as a bug against netstd? It's clearly a bug in the
libc package(s) so you should report it as a libc bug. If you send the
libc maintainer context diffs with the changes I'm sure he will add them
as soon as possible.

Linking your modified rmcd version to rlogin would be a bad idea. As you
already said you're already running a patched rlogin version so I assume
you're seeking for a permanent fix. Linking the rcmd function to rlogin
wouldn't be a permanent solution. Another problem is that this would only
affect rlogin. Other r-tools would use a different rcmd ... very bad.

If there are no objections I'll reassign it to libc6.


Thanks,

Peter

-- 
Peter Tobias <tobias@et-inf.fho-emden.de> <tobias@debian.org> <tobias@linux.de>
PGP ID EFAA400D, fingerprint = 06 89 EB 2E 01 7C B4 02  04 62 89 6C 2F DD F1 3C 


Information forwarded to debian-bugs-dist@lists.debian.org, Peter Tobias <tobias@et-inf.fho-emden.de>:
Bug#11300; Package netstd. (full text, mbox, link).


Acknowledgement sent to Christoph Lameter <clameter@waterf.org>:
Extra info received and forwarded to list. Copy sent to Peter Tobias <tobias@et-inf.fho-emden.de>. (full text, mbox, link).


Message #15 received at 11300@bugs.debian.org (full text, mbox, reply):

From: Christoph Lameter <clameter@waterf.org>
To: Peter Tobias <tobias@et-inf.fho-emden.de>
Cc: 11300@bugs.debian.org
Subject: Re: Bug#11300: netstd: rlogin: Connection refused
Date: Tue, 15 Jul 1997 15:24:16 -0700 (PDT)
No problem with reassigning the bug. The problem surfaces with rlogin
primarily though and might be related to how connections are handled on
the receiving side by rlogind or the kernel. There is such a wide variety
of factors here that I really do not know how to approach it. I just know
that the fix from Miquel does away with the problem. Dont know if this is
the correct way to approach the problem though.

On Tue, 15 Jul 1997, Peter Tobias wrote:

>On Jul 15, Christoph Lameter wrote:
>> Package: netstd
>> Version: 2.13-1
>> 
>> Since a long time I am running a specially patched rlogin version for one of our
>> hosts which redirects incoming calls from serial ports to a shell server. I had hoped that
>> 1.3.X would cure it but I got the same complaints again about connections not being
>> established.
>> 
>> I am running a special rcmd.c linked into rlogin which I got from Miquel a while back.
>> He said that he hoped the fixes would make it into a future libc version. Seems that they
>> did not. The trouble is with a port being blocked somehow and rlogin always hitting on
>> the same port on retries. I have had this lots of times also on my home setup where I just
>> abort the attempt and retry which usually makes it work.
>
>Why do you report it as a bug against netstd? It's clearly a bug in the
>libc package(s) so you should report it as a libc bug. If you send the
>libc maintainer context diffs with the changes I'm sure he will add them
>as soon as possible.
>
>Linking your modified rmcd version to rlogin would be a bad idea. As you
>already said you're already running a patched rlogin version so I assume
>you're seeking for a permanent fix. Linking the rcmd function to rlogin
>wouldn't be a permanent solution. Another problem is that this would only
>affect rlogin. Other r-tools would use a different rcmd ... very bad.
>
>If there are no objections I'll reassign it to libc6.
>
>
>Thanks,
>
>Peter
>
>-- 
>Peter Tobias <tobias@et-inf.fho-emden.de> <tobias@debian.org> <tobias@linux.de>
>PGP ID EFAA400D, fingerprint = 06 89 EB 2E 01 7C B4 02  04 62 89 6C 2F DD F1 3C 
>

--- +++ --- +++ --- +++ --- +++ --- +++ --- +++ --- +++ ---



Bug reassigned from package `netstd' to `libc6'. Request was from Peter Tobias <tobias@et-inf.fho-emden.de> to control@bugs.debian.org. (full text, mbox, link).


Reply sent to Ben Collins <bcollins@debian.org>:
You have taken responsibility. (full text, mbox, link).


Notification sent to Christoph Lameter <clameter@fuller.edu>:
Bug acknowledged by developer. (full text, mbox, link).


Message #22 received at 11300-close@bugs.debian.org (full text, mbox, reply):

From: Ben Collins <bcollins@debian.org>
To: 11300-close@bugs.debian.org
Subject: Bug#11300: fixed in glibc 2.1.94-1
Date: Tue, 26 Sep 2000 14:53:48 -0400
We believe that the bug you reported is fixed in the latest version of
glibc, which has been installed in the Debian FTP archive:
glibc_2.1.94-1.diff.gz
  to dists/woody/main/source/libs/glibc_2.1.94-1.diff.gz
  replacing glibc_2.1.3-10.diff.gz
glibc_2.1.94-1.dsc
  to dists/woody/main/source/libs/glibc_2.1.94-1.dsc
  replacing glibc_2.1.3-10.dsc
nscd_2.1.94-1_i386.deb
  to dists/woody/main/binary-i386/admin/nscd_2.1.94-1.deb
  replacing nscd_2.1.3-10.deb
i18ndata_2.1.94-1_all.deb
  to dists/woody/main/binary-all/admin/i18ndata_2.1.94-1.deb
  replacing i18ndata_2.1.3-10.deb
libc6-pic_2.1.94-1_i386.deb
  to dists/woody/main/binary-i386/devel/libc6-pic_2.1.94-1.deb
  replacing libc6-pic_2.1.3-10.deb
libc6-dbg_2.1.94-1_i386.deb
  to dists/woody/main/binary-i386/devel/libc6-dbg_2.1.94-1.deb
  replacing libc6-dbg_2.1.3-10.deb
libc6-dev_2.1.94-1_i386.deb
  to dists/woody/main/binary-i386/devel/libc6-dev_2.1.94-1.deb
  replacing libc6-dev_2.1.3-10.deb
libc6_2.1.94-1_i386.deb
  to dists/woody/main/binary-i386/base/libc6_2.1.94-1.deb
  replacing libc6_2.1.3-10.deb
glibc-doc_2.1.94-1_all.deb
  to dists/woody/main/binary-all/doc/glibc-doc_2.1.94-1.deb
  replacing glibc-doc_2.1.3-10.deb
locales_2.1.94-1_i386.deb
  to dists/woody/main/binary-i386/admin/locales_2.1.94-1.deb
  replacing locales_2.1.3-10.deb
glibc_2.1.94.orig.tar.gz
  to dists/woody/main/source/libs/glibc_2.1.94.orig.tar.gz
  replacing glibc_2.1.3.orig.tar.gz
libc6-prof_2.1.94-1_i386.deb
  to dists/woody/main/binary-i386/devel/libc6-prof_2.1.94-1.deb
  replacing libc6-prof_2.1.3-10.deb

Note that this package is not part of the released stable Debian
distribution.  It may have dependencies on other unreleased software,
or other instabilities.  Please take care if you wish to install it.
The update will eventually make its way into the next released Debian
distribution.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 11300@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Ben Collins <bcollins@debian.org> (supplier of updated glibc package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.6
Date: Mon, 25 Sep 2000 11:30:45 -0400
Source: glibc
Binary: locales libc0.2-dbg glibc-doc nscd libc6.1-dbg libc0.2 libc6-dbg libc0.2-prof libc6.1 libc6 libc0.2-pic libc6.1-prof libc6-prof libc0.2-dev libc6.1-pic libc6-pic i18ndata libc6.1-dev libc6-dev
Architecture: source all i386
Version: 2.1.94-1
Distribution: unstable
Urgency: low
Maintainer: Ben Collins <bcollins@debian.org>
Description: 
 glibc-doc  - GNU C Library: Documentation
 i18ndata   - GNU C Library: National Language (locale) data [source]
 libc6      - GNU C Library: Shared libraries and Timezone data
 libc6-dbg  - GNU C Library: Libraries with debugging symbols
 libc6-dev  - GNU C Library: Development Libraries and Header Files.
 libc6-pic  - GNU C Library: PIC archive library
 libc6-prof - GNU C Library: Profiling Libraries.
 locales    - GNU C Library: National Language (locale) data [binary]
 nscd       - GNU C Library: Name Service Cache Daemon
Closes: 11300 17874 19264 20973 22301 26514 30987 32345 33759 35049 45903 46547 47560 48713 54154 61497 64865 65276 65683 65684
Changes: 
 glibc (2.1.94-1) unstable; urgency=low
 .
   * New maintainer, "Lector, si monumentum requiris, circumspice"
   * New upstream version, pre 2.2 now
     - crypt is now in glibc source, so is not a seperate tarball
     - removed nss1 compat tarball
     - db2 is gone aswell
     - without db2, upstream split nss_db from main source (*sigh*)
   * Added inetd to list of services to restart
   * modfl/fmodl: documented in info pages, closes: #17874
   * Just a quick list of bugs that I can verify do not exist any longer,
     closes: #45903, #26514, #46547, #32345, #30987, #48713
   * fcloseall: in the case of stdio/fcloseall.c, yes, it only ever
     returns success. However, we use libio/fcloseall.c, who does in fact
     have a chance to return EOF, closes: #20973
   * libio/libio.h: shows that the Stream Hooks do in fact take (void *) as
     the first argument as shown in the protos, closes: #61497
   * trunc/floor: documented correctly in this release, closes: #65683, #65684
   * Hurd maintainers say this can be closed, closes: #54154
   * I'm pretty sure this isn't an issue anymore, else potato wouldn't be
     releasing, closes: #35049
   * Sorry this isn't a glibc bug. The kernel handles error returns on a
     failed executable. Most likely this is bin_interp's problem, but I
     seriously doubt it will be fixed because of conventions, standards and
     the like, closes: #22301
   * keyenvoy: no longer compiled for linux (it seems), closes: #47560
   * infnan: is defined now, closes: #19264
   * libc5 bug, no longer applies, closes: #11300
   * Make sure we copy over asm-sparc for sparc aswell as "generate-asm.sh"
     script used to generate /usr/include/asm
   * Disable parallel build on sparc (broken for some reason, might not be
     sparc specific)
   * devpts.sh: used a more devfs friendly version from bug submitter,
     closes: #65276
   * libc/postinst: cannot reproduce problem, appears to be user error,
     closes: #64865
   * glibc-doc: this bug is no longer valid, closes: #33759
   * We now use ldconfig from libc6 for all archs, ldso will conform.
   * Change build deps to just "kernel-headers" for non-Hurd archs. With
     mips and other coming down the pipe, this is bound to get ugly if we
     specify the particular version for each.
   * Add checks to automatically detect proper kernel-headers, error out
     otherwise.
   * hurd: add Depends: hurd (>= 20000803) for libc0.2
   * libpthread: soname version is now 0.9
   * debian/libc/DEBIAN/shlibs: bump to 2.1.94
   * libc6: add temporary depend on libdb2
   * debian/rules: check for FAKEROOTKEY, and fail if it's there. We cannot
     build under fakeroot, we need real rewt. Fear my hacking skillz.
Files: 
 b12264380255b85ab75cd9f2ad251d6a 1056 libs required glibc_2.1.94-1.dsc
 aa9e35f334b7e101e2e463240c90dd42 8990988 libs required glibc_2.1.94.orig.tar.gz
 01126069e02a4636ebf0832d80708c2c 115450 libs required glibc_2.1.94-1.diff.gz
 e4a40dc28035546ff79b766b5d583129 2426038 base required libc6_2.1.94-1_i386.deb
 28434da6d804129d3a6ad7cc996c9ab4 1951728 devel standard libc6-dev_2.1.94-1_i386.deb
 ae86035879e9414a8782876d23a2b083 866092 devel extra libc6-prof_2.1.94-1_i386.deb
 34e6307a87e92156bf59fd41548c33cb 2209020 devel extra libc6-dbg_2.1.94-1_i386.deb
 a6c5521f539f1fb61eee4e10794b89d5 764650 devel extra libc6-pic_2.1.94-1_i386.deb
 53b85af2289f6d01ad1d3f2edd0d8a5f 566098 admin standard locales_2.1.94-1_i386.deb
 48093f5ff5d413a700b1f5f4954963f7 35056 admin optional nscd_2.1.94-1_i386.deb
 ee2f0c9080783cd3fdb06c2c0fcca3e0 2393990 admin extra i18ndata_2.1.94-1_all.deb
 066a2096aca1fd7dca507ba5bd4ebb2b 2460542 doc optional glibc-doc_2.1.94-1_all.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.2 (GNU/Linux)
Comment: Some people are fools, some are just foolish

iD8DBQE50BMpfNc/ZB4E7C0RAm6aAKCQV5z2RaPrdAs+qsnRxu8Ianvz5ACfcZNs
acsm0HMD7EU25DHZbHLSMuQ=
=RpJU
-----END PGP SIGNATURE-----




Send a report that this bug log contains spam.


Debian bug tracking system administrator <owner@bugs.debian.org>. Last modified: Thu Apr 25 07:30:30 2024; Machine Name: buxtehude

Debian Bug tracking system

Debbugs is free software and licensed under the terms of the GNU Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.

Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.