Package: login
Version: 1:4.16.0-2+really2.41-5
Severity: normal

Dear Maintainer,

I've upgraded a server using rlogin/rsh-redone-server to trixie. Specifically, 
I upgraded
1:4.13+dfsg1-1+deb12u1 to 1:4.16.0-2+really2.41-5

After that, login via rlogin was rarely possible. That is, it sometimes worked, 
but in the majority of cases
(say, nine out of ten), the result was an instant connection close, for no 
apparant reason.

I tried downgradiong various components (switch inetd, switch rsh-server)
but as it turned out, the problematic component is login. Downgrading
just the login package to bookworm makes the login 100% reliable again,
upgrading login to trixie, no longer works.

I've provided two strace's created with the trixie login package, one with 
successful login
and one with failure:

http://data.plan9.de/login-success.txt
http://data.plan9.de/login-failure.txt

The crucial difference seems to be this (a good search point is "vhanghup"):

   37352 access("/dev/pts/9", R_OK|W_OK)   = 0
   37352 ioctl(0, TIOCGWINSZ, {ws_row=56, ws_col=120, ws_xpixel=1320, 
ws_ypixel=1064}) = 0
   37352 ioctl(0, TCGETS, {c_iflag=ICRNL|IXON, 
c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lf
   lag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
   37352 fchown(0, 0, 0)                   = 0
   37352 fchmod(0, 0600)                   = 0
   37352 ioctl(0, TCGETS, {c_iflag=ICRNL|IXON, 
c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lf
   lag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
   37352 ioctl(0, TCSETS, {c_iflag=ICRNL|IXON, 
c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lf
   lag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
   37352 ioctl(0, TCGETS, {c_iflag=ICRNL|IXON, 
c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lf
   lag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
   37352 close(0)                          = 0
   37352 close(1)                          = 0
   37352 close(2)                          = 0
   37351 <... pselect6 resumed>)           = 1 (in [3])
   37352 rt_sigaction(SIGHUP, {sa_handler=SIG_IGN, sa_mask=[HUP], 
sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7f8f79febd
   f0},  <unfinished ...>
   37351 read(3,  <unfinished ...>
   37352 <... rt_sigaction resumed>{sa_handler=SIG_DFL, sa_mask=[], 
sa_flags=0}, 8) = 0
   37351 <... read resumed>0x7ffc095bcf10, 1025) = -1 EIO (Input/output error)
   37352 vhangup( <unfinished ...>

What happens here is that login (37352) closes 0, 1 2, and this causes
the rlogind (37351) to get an instant HUP on it's pty fd, closing the
connection.

The success case looks very similar, except that the parent does not get an 
instant HUP and everything continues.

I haven't delved into the code, but it seems in the failure case either
login closes all fds to the tty, causing the pty to HUP, or maybe it's a
race.

In any case, this of course breaks all rlogin packages.

-- System Information:
Debian Release: 12.8
  APT prefers oldstable-updates
  APT policy: (990, 'oldstable-updates'), (990, 'oldstable-security'), (990, 
'oldstable'), (500, 'unstable-debug'), (500, 'testing-debug'), (500, 
'oldoldstable-debug'), (500, 'unstable'), (500, 'testing'), (100, 
'bookworm-fasttrack'), (1, 'experimental-debug'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386, x32

Kernel: Linux 6.1.0-28-amd64 (SMP w/28 CPU threads; PREEMPT)
Kernel taint flags: TAINT_USER, TAINT_WARN, TAINT_OOT_MODULE, 
TAINT_UNSIGNED_MODULE
Locale: LANG=en_IE.UTF-8, LC_CTYPE=en_IE.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages login depends on:
ii  libaudit1       1:3.0.9-1
ii  libc6           2.36-9+deb12u9
ii  libcrypt1       1:4.4.33-2
ii  libpam-modules  1.5.2-6+deb12u1
ii  libpam-runtime  1.5.2-6+deb12u1
ii  libpam0g        1.5.2-6+deb12u1

login recommends no packages.

login suggests no packages.

-- no debconf information

Reply via email to