]> granicus.if.org Git - shadow/commitdiff
* libmisc/setugid.c, src/login_nopam.c, src/suauth.c,
authornekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Sat, 13 Sep 2008 18:03:50 +0000 (18:03 +0000)
committernekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Sat, 13 Sep 2008 18:03:50 +0000 (18:03 +0000)
lib/getdef.c: Replace the %m format string by strerror(). This
avoids errno to be reset between the system call error and the
report function.

ChangeLog
lib/getdef.c
libmisc/setugid.c
src/login_nopam.c
src/suauth.c

index 65dc8edc5357ed677f3e0d78e72a671197baf1a4..802ce37db0b3b7cf3f1ebf303ad1f82828c71409 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-09-13  Nicolas François  <nicolas.francois@centraliens.net>
+
+       * libmisc/setugid.c, src/login_nopam.c, src/suauth.c,
+       lib/getdef.c: Replace the %m format string by strerror(). This
+       avoids errno to be reset between the system call error and the
+       report function.
+
 2008-09-13  Nicolas François  <nicolas.francois@centraliens.net>
 
        * lib/commonio.c: Ignore the return value of umask() when the mask
index db1645a926a8d81fe98bfbf95bcaeddbd3226abe..6f4ab7060847f69e7c42fd72fcf03e4435a295e0 100644 (file)
@@ -39,6 +39,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <ctype.h>
+#include <errno.h>
 #include "getdef.h"
 /*
  * A configuration item definition.
@@ -377,8 +378,9 @@ static void def_load (void)
         */
        fp = fopen (def_fname, "r");
        if (NULL == fp) {
-               SYSLOG ((LOG_CRIT, "cannot open login definitions %s [%m]",
-                        def_fname));
+               int err = errno;
+               SYSLOG ((LOG_CRIT, "cannot open login definitions %s [%s]",
+                        def_fname, strerror (err)));
                exit (1);
        }
 
@@ -426,8 +428,9 @@ static void def_load (void)
        }
 
        if (ferror (fp) != 0) {
-               SYSLOG ((LOG_CRIT, "cannot read login definitions %s [%m]",
-                        def_fname));
+               int err = errno;
+               SYSLOG ((LOG_CRIT, "cannot read login definitions %s [%s]",
+                        def_fname, strerror (err)));
                exit (1);
        }
 
index bfbde967499db42b63e5dfd54016b7bad4a9b950..be0d7163dd0848a6d536bd1643e200a1024c12ca 100644 (file)
@@ -40,6 +40,7 @@
 
 #include <stdio.h>
 #include <grp.h>
+#include <errno.h>
 #include "prototypes.h"
 #include "defines.h"
 #include <pwd.h>
@@ -56,9 +57,10 @@ int setup_groups (const struct passwd *info)
         * file.
         */
        if (setgid (info->pw_gid) == -1) {
+               int err = errno;
                perror ("setgid");
-               SYSLOG ((LOG_ERR, "bad group ID `%d' for user `%s': %m\n",
-                        info->pw_gid, info->pw_name));
+               SYSLOG ((LOG_ERR, "bad group ID `%d' for user `%s': %s\n",
+                        info->pw_gid, info->pw_name, strerror (err)));
                closelog ();
                return -1;
        }
@@ -68,9 +70,10 @@ int setup_groups (const struct passwd *info)
         * the group set from the /etc/group file.
         */
        if (initgroups (info->pw_name, info->pw_gid) == -1) {
+               int err = errno;
                perror ("initgroups");
-               SYSLOG ((LOG_ERR, "initgroups failed for user `%s': %m\n",
-                        info->pw_name));
+               SYSLOG ((LOG_ERR, "initgroups failed for user `%s': %s\n",
+                        info->pw_name, strerror (err)));
                closelog ();
                return -1;
        }
@@ -84,9 +87,10 @@ int change_uid (const struct passwd *info)
         * Set the real UID to the UID value in the password file.
         */
        if (setuid (info->pw_uid) != 0) {
+               int err = errno;
                perror ("setuid");
-               SYSLOG ((LOG_ERR, "bad user ID `%d' for user `%s': %m\n",
-                        (int) info->pw_uid, info->pw_name));
+               SYSLOG ((LOG_ERR, "bad user ID `%d' for user `%s': %s\n",
+                        (int) info->pw_uid, info->pw_name, strerror (err)));
                closelog ();
                return -1;
        }
index 0a954534e00203febcc85c2d2acb6b1e53ca07cd..d66087c5a4db0ac13a90d18be5cc7dea1df574ec 100644 (file)
@@ -133,7 +133,8 @@ int login_access (const char *user, const char *from)
                }
                (void) fclose (fp);
        } else if (errno != ENOENT) {
-               SYSLOG ((LOG_ERR, "cannot open %s: %m", TABLE));
+               int err = errno;
+               SYSLOG ((LOG_ERR, "cannot open %s: %s", TABLE, strerror (err)));
        }
        return (!match || (line[0] == '+'))?1:0;
 }
index 26f64aab6659f266de134e09788da1888575d3b5..a2c6735ab3f90b39c6dda29cc657e6c4e831f896 100644 (file)
@@ -76,17 +76,19 @@ int check_su_auth (const char *actual_id, const char *wanted_id)
        char *action;
 
        if (!(authfile_fd = fopen (SUAUTHFILE, "r"))) {
+               int err = errno;
                /*
                 * If the file doesn't exist - default to the standard su
                 * behaviour (no access control).  If open fails for some
                 * other reason - maybe someone is trying to fool us with
                 * file descriptors limit etc., so deny access.  --marekm
                 */
-               if (errno == ENOENT)
+               if (ENOENT == err) {
                        return NOACTION;
+               }
                SYSLOG ((LOG_ERR,
-                        "could not open/read config file '%s': %m\n",
-                        SUAUTHFILE));
+                        "could not open/read config file '%s': %s\n",
+                        SUAUTHFILE, strerror (err)));
                return DENY;
        }