* src/sulogin.c: Ignore return value of setlocale(),

bindtextdomain(), and textdomain().
	* src/sulogin.c: Avoid implicit conversion of pointers / integers
	/ chars to booleans.
	* src/sulogin.c: Avoid assignments in comparisons.
	* src/sulogin.c: Ignore the return value of alarm().
This commit is contained in:
nekral-guest 2008-06-10 19:36:05 +00:00
parent 46ce06791a
commit 3cbda4157b
2 changed files with 31 additions and 14 deletions

View File

@ -1,3 +1,12 @@
2008-06-10 Nicolas François <nicolas.francois@centraliens.net>
* src/sulogin.c: Ignore return value of setlocale(),
bindtextdomain(), and textdomain().
* src/sulogin.c: Avoid implicit conversion of pointers / integers
/ chars to booleans.
* src/sulogin.c: Avoid assignments in comparisons.
* src/sulogin.c: Ignore the return value of alarm().
2008-06-10 Nicolas François <nicolas.francois@centraliens.net> 2008-06-10 Nicolas François <nicolas.francois@centraliens.net>
* src/groups.c: Use a bool when possible instead of int integers. * src/groups.c: Use a bool when possible instead of int integers.

View File

@ -99,9 +99,9 @@ static RETSIGTYPE catch_signals (unused int sig)
tcsetattr (0, TCSANOW, &termio); tcsetattr (0, TCSANOW, &termio);
#endif #endif
setlocale (LC_ALL, ""); (void) setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR); (void) bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE); (void) textdomain (PACKAGE);
#ifdef USE_SYSLOG #ifdef USE_SYSLOG
OPENLOG ("sulogin"); OPENLOG ("sulogin");
@ -140,7 +140,7 @@ static RETSIGTYPE catch_signals (unused int sig)
exit (1); exit (1);
} }
#endif #endif
if (!isatty (0) || !isatty (1) || !isatty (2)) { if ((isatty (0) == 0) || (isatty (1) == 0) || (isatty (2) == 0)) {
#ifdef USE_SYSLOG #ifdef USE_SYSLOG
closelog (); closelog ();
#endif #endif
@ -149,18 +149,25 @@ static RETSIGTYPE catch_signals (unused int sig)
/* If we were init, we need to start a new session */ /* If we were init, we need to start a new session */
if (getppid() == 1) { if (getppid() == 1) {
setsid(); setsid();
if (ioctl(0, TIOCSCTTY, 1)) if (ioctl(0, TIOCSCTTY, 1) != 0) {
fputs (_("TIOCSCTTY failed"), stderr); fputs (_("TIOCSCTTY failed"), stderr);
}
}
while (NULL != *envp) { /* add inherited environment, */
addenv (*envp, NULL); /* some variables change later */
envp++;
} }
while (*envp) /* add inherited environment, */
addenv (*envp++, NULL); /* some variables change later */
#ifndef USE_PAM #ifndef USE_PAM
if ((cp = getdef_str ("ENV_TZ"))) cp = getdef_str ("ENV_TZ");
addenv (*cp == '/' ? tz (cp) : cp, NULL); if (NULL != cp) {
if ((cp = getdef_str ("ENV_HZ"))) addenv (('/' == *cp) ? tz (cp) : cp, NULL);
}
cp = getdef_str ("ENV_HZ");
if (NULL != cp) {
addenv (cp, NULL); /* set the default $HZ, if one */ addenv (cp, NULL); /* set the default $HZ, if one */
}
#endif /* !USE_PAM */ #endif /* !USE_PAM */
(void) strcpy (name, "root"); /* KLUDGE!!! */ (void) strcpy (name, "root"); /* KLUDGE!!! */
@ -168,7 +175,7 @@ static RETSIGTYPE catch_signals (unused int sig)
signal (SIGALRM, catch_signals); /* exit if the timer expires */ signal (SIGALRM, catch_signals); /* exit if the timer expires */
alarm (ALARM); /* only wait so long ... */ alarm (ALARM); /* only wait so long ... */
while (1) { /* repeatedly get login/password pairs */ while (true) { /* repeatedly get login/password pairs */
pw_entry (name, &pwent); /* get entry from password file */ pw_entry (name, &pwent); /* get entry from password file */
if (pwent.pw_name == (char *) 0) { if (pwent.pw_name == (char *) 0) {
/* /*
@ -198,7 +205,7 @@ static RETSIGTYPE catch_signals (unused int sig)
* it will work with standard getpass() (no NULL on EOF). * it will work with standard getpass() (no NULL on EOF).
* --marekm * --marekm
*/ */
if (!cp || !*cp) { if ((NULL == cp) || ('\0' == *cp)) {
#ifdef USE_SYSLOG #ifdef USE_SYSLOG
SYSLOG (LOG_INFO, "Normal startup\n"); SYSLOG (LOG_INFO, "Normal startup\n");
closelog (); closelog ();
@ -222,7 +229,7 @@ static RETSIGTYPE catch_signals (unused int sig)
puts (_("Login incorrect")); puts (_("Login incorrect"));
} }
strzero (pass); strzero (pass);
alarm (0); (void) alarm (0);
signal (SIGALRM, SIG_DFL); signal (SIGALRM, SIG_DFL);
environ = newenvp; /* make new environment active */ environ = newenvp; /* make new environment active */
@ -236,6 +243,7 @@ static RETSIGTYPE catch_signals (unused int sig)
#endif #endif
/* exec the shell finally. */ /* exec the shell finally. */
err = shell (pwent.pw_shell, (char *) 0, environ); err = shell (pwent.pw_shell, (char *) 0, environ);
exit (err == ENOENT ? E_CMD_NOTFOUND : E_CMD_NOEXEC); exit ((err == ENOENT) ? E_CMD_NOTFOUND : E_CMD_NOEXEC);
/*NOTREACHED*/ return (0); /*NOTREACHED*/ return (0);
} }