From: nekral-guest Date: Sun, 25 May 2008 21:52:14 +0000 (+0000) Subject: * hushed returns a bool instead of int. X-Git-Tag: 4.1.3~496 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bc0657d13c5c357885112494ae9888ab5b387a60;p=shadow * hushed returns a bool instead of int. * Avoid assignments in comparisons. * (hushed) Change type of found to bool. * Add brackets. * Always check if the user or the shell is in the file. Do not check the first character of the line first. This is simpler and match better with the HUSHLOGIN_FILE documentation. --- diff --git a/ChangeLog b/ChangeLog index 1dc0f2c0..94ffeee8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,10 +1,20 @@ +2008-05-25 Nicolas François + + * libmisc/hushed.c: hushed returns a bool instead of int. + * libmisc/hushed.c: Avoid assignments in comparisons. + * libmisc/hushed.c (hushed): Change type of found to bool. + * libmisc/hushed.c: Add brackets. + * libmisc/hushed.c: Always check if the user or the shell is in + the file. Do not check the first character of the line first. This + is simpler and match better with the HUSHLOGIN_FILE documentation. + 2008-05-25 Nicolas François * lib/getdef.h, lib/getdef.c: getdef_bool returns a bool instead of int. * lib/getdef.c: Change typo of def_loaded to bool. * lib/getdef.c: Add brackets. - * lib/getdef.c: Avoid assignment in comparisons. + * lib/getdef.c: Avoid assignments in comparisons. 2008-05-25 Nicolas François diff --git a/libmisc/hushed.c b/libmisc/hushed.c index ccfb9afb..327487ae 100644 --- a/libmisc/hushed.c +++ b/libmisc/hushed.c @@ -36,21 +36,21 @@ #include #include +#include #include "defines.h" #include "prototypes.h" #include "getdef.h" -#include /* * hushed - determine if a user receives login messages * * Look in the hushed-logins file (or user's home directory) to see * if the user is to receive the login-time messages. */ -int hushed (const struct passwd *pw) +bool hushed (const struct passwd *pw) { char *hushfile; char buf[BUFSIZ]; - int found; + bool found; FILE *fp; /* @@ -58,8 +58,10 @@ int hushed (const struct passwd *pw) * defined, default to a noisy login. */ - if ((hushfile = getdef_str ("HUSHLOGIN_FILE")) == NULL) - return 0; + hushfile = getdef_str ("HUSHLOGIN_FILE"); + if (NULL == hushfile) { + return false; + } /* * If this is not a fully rooted path then see if the @@ -73,17 +75,19 @@ int hushed (const struct passwd *pw) /* * If this is a fully rooted path then go through the file - * and see if this user is in there. + * and see if this user, or its shell is in there. */ - if ((fp = fopen (hushfile, "r")) == NULL) - return 0; - - for (found = 0; !found && fgets (buf, sizeof buf, fp);) { + fp = fopen (hushfile, "r"); + if (NULL == fp) { + return false; + } + for (found = false; !found && (fgets (buf, sizeof buf, fp) != NULL);) { buf[strlen (buf) - 1] = '\0'; - found = !strcmp (buf, - buf[0] == '/' ? pw->pw_shell : pw->pw_name); + found = (strcmp (buf, pw->pw_shell) == 0) || + (strcmp (buf, pw->pw_name) == 0); } (void) fclose (fp); return found; } +