[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1708: passwd' not interruptible when invoked by `adduser'

Hello Ian Jackson!

}Package: adduser? miscutils?
}Version: adduser (1.94-1), miscutils (1.3-2)

No. libc.

}If I run adduser, and then decide to abort after having been presented
}with the password prompt, I can't do it with ^C.  passwd apparently
}ignores ^C, and ^D simply produces another passwd prompt.  Presumably
}I would have to type in a password twice to escape; instead, I used
}another terminal and killed the adduser process.

Because I have heavily modified the passwd program in the last days I
checked this report...

The reason is not in the adduser nor in the miscutils (or util-linux
where my passwd comes from). It's in the libc itself.

The passwd programm just makes a system call:

-- [passwd.c] --------------------------------------------------------
        pwdstr = getpass("Enter new password: ");
        if (pwdstr[0] == '\0') {
            puts("Password not changed.");

Looking at the source of libc you'll find the code that is responsible
for disabling ^C:

-- [getpass.c] -------------------------------------------------------
        ttyb.c_lflag &= ~(ECHO|ISIG);
        ioctl(fileno(tty), TCSETS, &ttyb);

The above code (from util-linux) will accept an empty password
(generated with ^D) - and won't change anything. For me this is a
correct behaviour - I can live with that.

I haven't looked at the passwd program that is used by Debian.

So far,


   / Martin Schulze  *  joey@infodrom.north.de  *  26129 Oldenburg /
  / +49-441-777884  *  Login&Passwd: nuucp  *  Index: ~/ls-lR.gz  /
 /                            Erfahrung ist eine n|tzliche Sache /
/ Leider macht man sie immer erst kurz nachdem man sie brauchte /
30.10.95: Oldenburger Linux-Stammtisch, ab 20h im DaCapo

Reply to: