Replace the deprecated getpass(3) by our agetpass()
getpass(3) is broken in all implementations; in some, more than others, but somewhat broken in all of them. Check the immediate previous commit, which added the functions, for more details. Check also the Linux man-pages commit that marked it as deprecated, for more details: 7ca189099d73bde954eed2d7fc21732bcc8ddc6b. Link: <https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/commit?id=7ca189099d73bde954eed2d7fc21732bcc8ddc6b> Reported-by: Christian Göttsche <cgzones@googlemail.com> Signed-off-by: Alejandro Colomar <alx@kernel.org>
This commit is contained in:
committed by
Iker Pedrosa
parent
155c9421b9
commit
554f86bafa
@@ -182,7 +182,7 @@ static void catch_signals (unused int sig)
|
||||
*/
|
||||
|
||||
/* get a password for root */
|
||||
cp = getpass (_(
|
||||
cp = agetpass (_(
|
||||
"\n"
|
||||
"Type control-d to proceed with normal startup,\n"
|
||||
"(or give root password for system maintenance):"));
|
||||
@@ -193,6 +193,7 @@ static void catch_signals (unused int sig)
|
||||
* --marekm
|
||||
*/
|
||||
if ((NULL == cp) || ('\0' == *cp)) {
|
||||
erase_pass (cp);
|
||||
#ifdef USE_SYSLOG
|
||||
SYSLOG (LOG_INFO, "Normal startup\n");
|
||||
closelog ();
|
||||
@@ -204,7 +205,8 @@ static void catch_signals (unused int sig)
|
||||
exit (0);
|
||||
}
|
||||
STRFCPY (pass, cp);
|
||||
strzero (cp);
|
||||
erase_pass (cp);
|
||||
|
||||
if (valid (pass, &pwent)) { /* check encrypted passwords ... */
|
||||
break; /* ... encrypted passwords matched */
|
||||
}
|
||||
|
Reference in New Issue
Block a user