]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
src/: Hardcode Prog to known value
authorSkyler Ferrante <sjf5462@rit.edu>
Sun, 3 Mar 2024 05:54:05 +0000 (00:54 -0500)
committerAlejandro Colomar <alx@kernel.org>
Thu, 7 Mar 2024 21:54:04 +0000 (22:54 +0100)
Set Prog (program name) based on hardcoded value instead of argv[0].
This is to help prevent escape sequence injection.

Cherry-picked-from: e6c2e4393784 ("Hardcoding Prog to known value")
Link: <https://github.com/shadow-maint/shadow/issues/959>
Link: <https://github.com/shadow-maint/shadow/pull/960>
Cc: "Skyler Ferrante (RIT Student)" <sjf5462@rit.edu>
Cc: "Serge E. Hallyn" <serge@hallyn.com>
Cc: Karel Zak <kzak@redhat.com>
Cc: Iker Pedrosa <ipedrosa@redhat.com>
Cc: Christian Brauner <christian@brauner.io>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
37 files changed:
src/chage.c
src/check_subid_range.c
src/chfn.c
src/chgpasswd.c
src/chpasswd.c
src/chsh.c
src/expiry.c
src/faillog.c
src/free_subid_range.c
src/get_subid_owners.c
src/getsubids.c
src/gpasswd.c
src/groupadd.c
src/groupdel.c
src/groupmems.c
src/groupmod.c
src/groups.c
src/grpck.c
src/grpconv.c
src/grpunconv.c
src/lastlog.c
src/login.c
src/logoutd.c
src/new_subid_range.c
src/newgidmap.c
src/newgrp.c
src/newuidmap.c
src/newusers.c
src/passwd.c
src/pwck.c
src/pwconv.c
src/pwunconv.c
src/su.c
src/sulogin.c
src/useradd.c
src/userdel.c
src/usermod.c

index 8a6d3584a8c8771e28043b87cf7a8c5c4e4b9657..b64961f69a53835d80d4afda6130e2ebfe8be1c0 100644 (file)
@@ -41,7 +41,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "chage";
 
 static bool
     dflg = false,              /* set last password change date */
@@ -511,7 +511,7 @@ static void check_perms (void)
                exit (E_NOPERM);
        }
 
-       retval = pam_start ("chage", pampw->pw_name, &conv, &pamh);
+       retval = pam_start (Prog, pampw->pw_name, &conv, &pamh);
 
        if (PAM_SUCCESS == retval) {
                retval = pam_authenticate (pamh, 0);
@@ -765,7 +765,6 @@ int main (int argc, char **argv)
        /*
         * Get the program name so that error messages can use it.
         */
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
@@ -780,7 +779,7 @@ int main (int argc, char **argv)
 #ifdef WITH_AUDIT
        audit_help_open ();
 #endif
-       OPENLOG ("chage");
+       OPENLOG (Prog);
 
        ruid = getuid ();
        rgid = getgid ();
index 38703b60301cabb8d183ff303cfa1bbf71aec985..63bc882f501c533921b63ea19144b40f4fabe53a 100644 (file)
 #include "idmapping.h"
 #include "shadowlog.h"
 
-const char *Prog;
+static const char Prog[] = "check_subid_range";
 
 int main(int argc, char **argv)
 {
        char *owner;
        unsigned long start, count;
        bool check_uids;
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
index 5018ab87f312dcb01f7e39335ccabd36a2021e16..2fd81d3dcb8884c7b7dd3a08c44d7ead3a2bdc43 100644 (file)
@@ -36,7 +36,7 @@
 /*
  * Global variables.
  */
-const char *Prog;
+static const char Prog[] = "chfn";
 static char fullnm[BUFSIZ];
 static char roomno[BUFSIZ];
 static char workph[BUFSIZ];
@@ -362,7 +362,7 @@ static void check_perms (const struct passwd *pw)
         * check if the change is allowed by SELinux policy.
         */
        if ((pw->pw_uid != getuid ())
-           && (check_selinux_permit ("chfn") != 0)) {
+           && (check_selinux_permit (Prog) != 0)) {
                fprintf (stderr, _("%s: Permission denied.\n"), Prog);
                closelog ();
                exit (E_NOPERM);
@@ -377,7 +377,7 @@ static void check_perms (const struct passwd *pw)
         * --marekm
         */
        if (!amroot && getdef_bool ("CHFN_AUTH")) {
-               passwd_check (pw->pw_name, pw->pw_passwd, "chfn");
+               passwd_check (pw->pw_name, pw->pw_passwd, Prog);
        }
 
 #else                          /* !USE_PAM */
@@ -389,7 +389,7 @@ static void check_perms (const struct passwd *pw)
                exit (E_NOPERM);
        }
 
-       retval = pam_start ("chfn", pampw->pw_name, &conv, &pamh);
+       retval = pam_start (Prog, pampw->pw_name, &conv, &pamh);
 
        if (PAM_SUCCESS == retval) {
                retval = pam_authenticate (pamh, 0);
@@ -616,11 +616,6 @@ int main (int argc, char **argv)
        char new_gecos[BUFSIZ]; /* buffer for new GECOS fields       */
        char *user;
 
-       /*
-        * Get the program name. The program name is used as a
-        * prefix to most error messages.
-        */
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
@@ -637,7 +632,7 @@ int main (int argc, char **argv)
         */
        amroot = (getuid () == 0);
 
-       OPENLOG ("chfn");
+       OPENLOG (Prog);
 
        /* parse the command line options */
        process_flags (argc, argv);
index 7b773e2ffe2b852fd1c32a08d888b64d049d9ffe..89e9a6dcd35d79523d616b724948d42d98aa3458 100644 (file)
@@ -36,7 +36,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "chgpasswd";
 static bool eflg   = false;
 static bool md5flg = false;
 #if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT)
@@ -303,7 +303,7 @@ static void check_perms (void)
                exit (1);
        }
 
-       retval = pam_start ("chgpasswd", pampw->pw_name, &conv, &pamh);
+       retval = pam_start (Prog, pampw->pw_name, &conv, &pamh);
 
        if (PAM_SUCCESS == retval) {
                retval = pam_authenticate (pamh, 0);
@@ -423,7 +423,6 @@ int main (int argc, char **argv)
        int errors = 0;
        int line = 0;
 
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
@@ -441,7 +440,7 @@ int main (int argc, char **argv)
 
        process_flags (argc, argv);
 
-       OPENLOG ("chgpasswd");
+       OPENLOG (Prog);
 
        check_perms ();
 
index 21d3018f89aee48058c7b34dcd0a0dd902511784..64070bc1833ec453e74157910cbd021a16c2c58f 100644 (file)
@@ -35,7 +35,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "chpasswd";
 static bool eflg   = false;
 static bool md5flg = false;
 #if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT)
@@ -302,7 +302,7 @@ static void check_perms (void)
                exit (1);
        }
 
-       retval = pam_start ("chpasswd", pampw->pw_name, &conv, &pamh);
+       retval = pam_start (Prog, pampw->pw_name, &conv, &pamh);
 
        if (PAM_SUCCESS == retval) {
                retval = pam_authenticate (pamh, 0);
@@ -450,7 +450,6 @@ int main (int argc, char **argv)
        int errors = 0;
        int line = 0;
 
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
@@ -476,7 +475,7 @@ int main (int argc, char **argv)
        }
 #endif                         /* USE_PAM */
 
-       OPENLOG ("chpasswd");
+       OPENLOG (Prog);
 
        check_perms ();
 
@@ -546,7 +545,7 @@ int main (int argc, char **argv)
 
 #ifdef USE_PAM
                if (use_pam) {
-                       if (do_pam_passwd_non_interactive ("chpasswd", name, newpwd) != 0) {
+                       if (do_pam_passwd_non_interactive (Prog, name, newpwd) != 0) {
                                fprintf (stderr,
                                         _("%s: (line %d, user %s) password not changed\n"),
                                         Prog, line, name);
index e069b9fb3707229b8aec0014cc8e828eab37200c..e29ac580e5e88a7cf7acdf6fd4577d13d7bbff95 100644 (file)
@@ -45,7 +45,7 @@
 /*
  * Global variables
  */
-const char *Prog;              /* Program name */
+static const char Prog[] = "chsh";     /* Program name */
 static bool amroot;            /* Real UID is root */
 static char loginsh[BUFSIZ];   /* Name of new login shell */
 /* command line options */
@@ -320,7 +320,7 @@ static void check_perms (const struct passwd *pw)
         * check if the change is allowed by SELinux policy.
         */
        if ((pw->pw_uid != getuid ())
-           && (check_selinux_permit("chsh") != 0)) {
+           && (check_selinux_permit(Prog) != 0)) {
                SYSLOG ((LOG_WARN, "can't change shell for '%s'", pw->pw_name));
                fprintf (stderr,
                         _("You may not change the shell for '%s'.\n"),
@@ -337,7 +337,7 @@ static void check_perms (const struct passwd *pw)
         * chfn/chsh.  --marekm
         */
        if (!amroot && getdef_bool ("CHSH_AUTH")) {
-               passwd_check (pw->pw_name, pw->pw_passwd, "chsh");
+               passwd_check (pw->pw_name, pw->pw_passwd, Prog);
         }
 
 #else                          /* !USE_PAM */
@@ -349,7 +349,7 @@ static void check_perms (const struct passwd *pw)
                exit (E_NOPERM);
        }
 
-       retval = pam_start ("chsh", pampw->pw_name, &conv, &pamh);
+       retval = pam_start (Prog, pampw->pw_name, &conv, &pamh);
 
        if (PAM_SUCCESS == retval) {
                retval = pam_authenticate (pamh, 0);
@@ -474,11 +474,6 @@ int main (int argc, char **argv)
 
        sanitize_env ();
 
-       /*
-        * Get the program name. The program name is used as a prefix to
-        * most error messages.
-        */
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
@@ -493,7 +488,7 @@ int main (int argc, char **argv)
         */
        amroot = (getuid () == 0);
 
-       OPENLOG ("chsh");
+       OPENLOG (Prog);
 
        /* parse the command line options */
        process_flags (argc, argv);
index b980b65653860ca4cd43193fce4099b18bd217bc..673cbc3cbdb0c0e7d07b62ba6ce29e1780b68cca 100644 (file)
@@ -23,7 +23,7 @@
 #include "shadowlog.h"
 
 /* Global variables */
-const char *Prog;
+static const char Prog[] = "expiry";
 static bool cflg = false;
 
 /* local function prototypes */
@@ -123,7 +123,6 @@ int main (int argc, char **argv)
        struct passwd *pwd;
        struct spwd *spwd;
 
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
@@ -145,7 +144,7 @@ int main (int argc, char **argv)
        (void) bindtextdomain (PACKAGE, LOCALEDIR);
        (void) textdomain (PACKAGE);
 
-       OPENLOG ("expiry");
+       OPENLOG (Prog);
 
        process_flags (argc, argv);
 
index dbcf5a5f9f7ca41692f9f0d7a4ed44c302b35d39..60d56d02b0b5d31b0eb6e25fea917d0f99db56d4 100644 (file)
@@ -39,7 +39,7 @@ static void reset (void);
 /*
  * Global variables
  */
-const char *Prog;              /* Program name */
+static const char Prog[] = "faillog";  /* Program name */
 static FILE *fail;             /* failure file stream */
 static time_t seconds;         /* that number of days in seconds */
 static unsigned long umin;     /* if uflg and has_umin, only display users with uid >= umin */
@@ -543,11 +543,6 @@ int main (int argc, char **argv)
        short fail_max = 0; // initialize to silence compiler warning
        long days = 0;
 
-       /*
-        * Get the program name. The program name is used as a prefix to
-        * most error messages.
-        */
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
index d9a2cd8da70aad56ee6e6979cbe5f45075edc22a..441c22772b2eb9b1411a08234d9c4225cb46915e 100644 (file)
@@ -9,7 +9,7 @@
 
 /* Test program for the subid freeing routine */
 
-const char *Prog;
+static const char Prog[] = "free_subid_range";
 
 static void usage(void)
 {
@@ -25,7 +25,6 @@ int main(int argc, char *argv[])
        struct subordinate_range range;
        bool group = false;   // get subuids by default
 
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
        while ((c = getopt(argc, argv, "g")) != EOF) {
index 36974b84565da96a4ef257a75a2794d806731eea..e1c1e795eae9086181b39190e7f3e0d895ea030a 100644 (file)
@@ -6,7 +6,7 @@
 #include "prototypes.h"
 #include "shadowlog.h"
 
-const char *Prog;
+static const char Prog[] = "get_subid_owners";
 
 static void usage(void)
 {
@@ -21,7 +21,6 @@ int main(int argc, char *argv[])
        int i, n;
        uid_t *uids;
 
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
        if (argc < 2) {
index c91ae39e36c5bc68a4492814e700c6bf629a80fe..fb645b1940c7709962c8966e87519a10bab8cfe6 100644 (file)
@@ -7,7 +7,7 @@
 #include "prototypes.h"
 #include "shadowlog.h"
 
-const char *Prog;
+static const char Prog[] = "getsubids";
 
 static void usage(void)
 {
@@ -23,7 +23,6 @@ int main(int argc, char *argv[])
        struct subid_range *ranges;
        const char *owner;
 
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
        if (argc < 2)
index 3b76ff8ed19d5a28fc4472b655a0889fd28a4899..34205cc7846ef9e83de074e64f77fb0fa9776cb3 100644 (file)
@@ -37,7 +37,7 @@
  * Global variables
  */
 /* The name of this command, as it is invoked */
-const char *Prog;
+static const char Prog[] = "gpasswd";
 
 #ifdef SHADOWGRP
 /* Indicate if shadow groups are enabled on the system
@@ -968,11 +968,10 @@ int main (int argc, char **argv)
         * with this command.
         */
        bywho = getuid ();
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
-       OPENLOG ("gpasswd");
+       OPENLOG (Prog);
        setbuf (stdout, NULL);
        setbuf (stderr, NULL);
 
index 2eda1c68045d90b3fe6f8aaec88997afbcfec9d5..c30a20086e87ec2a95585dbd426ecd966a6f674c 100644 (file)
@@ -50,7 +50,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "groupadd";
 
 static /*@null@*/char *group_name;
 static gid_t group_id;
@@ -542,7 +542,7 @@ static void check_perms (void)
                exit (1);
        }
 
-       retval = pam_start ("groupadd", pampw->pw_name, &conv, &pamh);
+       retval = pam_start (Prog, pampw->pw_name, &conv, &pamh);
 
        if (PAM_SUCCESS == retval) {
                retval = pam_authenticate (pamh, 0);
@@ -571,10 +571,6 @@ static void check_perms (void)
  */
 int main (int argc, char **argv)
 {
-       /*
-        * Get my name so that I can use it to report errors.
-        */
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
@@ -585,7 +581,7 @@ int main (int argc, char **argv)
        process_root_flag ("-R", argc, argv);
        prefix = process_prefix_flag ("-P", argc, argv);
 
-       OPENLOG ("groupadd");
+       OPENLOG (Prog);
 #ifdef WITH_AUDIT
        audit_help_open ();
 #endif
@@ -605,7 +601,7 @@ int main (int argc, char **argv)
        check_perms ();
 
        if (run_parts ("/etc/shadow-maint/groupadd-pre.d", group_name,
-                       "groupadd")) {
+                       Prog)) {
                exit(1);
        }
 
@@ -628,7 +624,7 @@ int main (int argc, char **argv)
        grp_update ();
        close_files ();
        if (run_parts ("/etc/shadow-maint/groupadd-post.d", group_name,
-                       "groupadd")) {
+                       Prog)) {
                exit(1);
        }
 
index bae4367ba4c579fc83e4eb3ceb55ce8ae56d2fef..3e3905fbb974e994b8df53ecbbed1b88d5c4d36b 100644 (file)
@@ -36,7 +36,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "groupdel";
 
 static char *group_name;
 static gid_t group_id = -1;
@@ -349,10 +349,6 @@ int main (int argc, char **argv)
 #endif                         /* USE_PAM */
 #endif                         /* ACCT_TOOLS_SETUID */
 
-       /*
-        * Get my name so that I can use it to report errors.
-        */
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
@@ -363,7 +359,7 @@ int main (int argc, char **argv)
        process_root_flag ("-R", argc, argv);
        prefix = process_prefix_flag ("-P", argc, argv);
 
-       OPENLOG ("groupdel");
+       OPENLOG (Prog);
 #ifdef WITH_AUDIT
        audit_help_open ();
 #endif
@@ -389,7 +385,7 @@ int main (int argc, char **argv)
                        exit (1);
                }
 
-               retval = pam_start ("groupdel", pampw->pw_name, &conv, &pamh);
+               retval = pam_start (Prog, pampw->pw_name, &conv, &pamh);
        }
 
        if (PAM_SUCCESS == retval) {
@@ -463,7 +459,7 @@ int main (int argc, char **argv)
        }
 
        if (run_parts ("/etc/shadow-maint/groupdel-pre.d", group_name,
-                       "groupdel")) {
+                       Prog)) {
                exit(1);
        }
 
@@ -478,7 +474,7 @@ int main (int argc, char **argv)
        close_files ();
 
        if (run_parts ("/etc/shadow-maint/groupdel-post.d", group_name,
-                       "groupdel")) {
+                       Prog)) {
                exit(1);
        }
 
index 1ac937ea15426c85d2f7044decc966b1515fce52..9c449086b83ed9d5090210067c4a80201c1a9b3d 100644 (file)
@@ -44,7 +44,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "groupmems";
 
 static char *adduser = NULL;
 static char *deluser = NULL;
@@ -443,7 +443,7 @@ static void check_perms (void)
                        fail_exit (1);
                }
 
-               retval = pam_start ("groupmems", pampw->pw_name, &conv, &pamh);
+               retval = pam_start (Prog, pampw->pw_name, &conv, &pamh);
 
                if (PAM_SUCCESS == retval) {
                        retval = pam_authenticate (pamh, 0);
@@ -573,10 +573,6 @@ int main (int argc, char **argv)
        char *name;
        const struct group *grp;
 
-       /*
-        * Get my name so that I can use it to report errors.
-        */
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
@@ -586,7 +582,7 @@ int main (int argc, char **argv)
 
        process_root_flag ("-R", argc, argv);
 
-       OPENLOG ("groupmems");
+       OPENLOG (Prog);
 
 #ifdef SHADOWGRP
        is_shadowgrp = sgr_file_present ();
index 7fd02d6f5a7083fd346c75627bedf5bf642388bb..5438342d5d9a1a523acfa6a133c048fa8da10143 100644 (file)
@@ -58,7 +58,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "groupmod";
 
 #ifdef SHADOWGRP
 static bool is_shadow_grp;
@@ -750,10 +750,6 @@ int main (int argc, char **argv)
 #endif                         /* USE_PAM */
 #endif                         /* ACCT_TOOLS_SETUID */
 
-       /*
-        * Get my name so that I can use it to report errors.
-        */
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
@@ -764,7 +760,7 @@ int main (int argc, char **argv)
        process_root_flag ("-R", argc, argv);
        prefix = process_prefix_flag ("-P", argc, argv);
 
-       OPENLOG ("groupmod");
+       OPENLOG (Prog);
 #ifdef WITH_AUDIT
        audit_help_open ();
 #endif
@@ -790,7 +786,7 @@ int main (int argc, char **argv)
                        exit (E_PAM_USERNAME);
                }
 
-               retval = pam_start ("groupmod", pampw->pw_name, &conv, &pamh);
+               retval = pam_start (Prog, pampw->pw_name, &conv, &pamh);
        }
 
        if (PAM_SUCCESS == retval) {
index a62f2f56d07285f4ab452d72e9c49473bb93b603..97c2843f08a1b3878ba68b91ba2c63d169d83c58 100644 (file)
@@ -23,7 +23,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "groups";
 
 /* local function prototypes */
 static void print_groups (const char *member);
@@ -97,10 +97,6 @@ int main (int argc, char **argv)
        (void) bindtextdomain (PACKAGE, LOCALEDIR);
        (void) textdomain (PACKAGE);
 
-       /*
-        * Get the program name so that error messages can use it.
-        */
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
index ec092b2c296714554d2dd4bf1c28129fa7f95ccc..4ef1b1542621abfe153be8623865da73d18a6aaf 100644 (file)
@@ -43,7 +43,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "grpck";
 
 static const char *grp_file = GROUP_FILE;
 static bool use_system_grp_file = true;
@@ -816,10 +816,6 @@ int main (int argc, char **argv)
        int errors = 0;
        bool changed = false;
 
-       /*
-        * Get my name so that I can use it to report errors.
-        */
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
@@ -829,7 +825,7 @@ int main (int argc, char **argv)
 
        process_root_flag ("-R", argc, argv);
 
-       OPENLOG ("grpck");
+       OPENLOG (Prog);
 
        /* Parse the command line arguments */
        process_flags (argc, argv);
index 57d8d58ec498f52b9e918378aa1de5245853c5d4..591c8b10c74d1d8e1c44e7bb435ee189c3799b53 100644 (file)
@@ -36,7 +36,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "grpconv";
 
 static bool gr_locked  = false;
 static bool sgr_locked = false;
@@ -123,7 +123,6 @@ int main (int argc, char **argv)
        const struct sgrp *sg;
        struct sgrp sgent;
 
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
@@ -133,7 +132,7 @@ int main (int argc, char **argv)
 
        process_root_flag ("-R", argc, argv);
 
-       OPENLOG ("grpconv");
+       OPENLOG (Prog);
 
        process_flags (argc, argv);
 
index fc6cecf9377185c53cb74c9ba3115353b0ad535f..fbffbf53ac34d3c5039bb4a3bdfef3d6fb268a9e 100644 (file)
@@ -36,7 +36,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "grpunconv";
 
 static bool gr_locked  = false;
 static bool sgr_locked = false;
@@ -122,7 +122,6 @@ int main (int argc, char **argv)
        struct group grent;
        const struct sgrp *sg;
 
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
@@ -132,7 +131,7 @@ int main (int argc, char **argv)
 
        process_root_flag ("-R", argc, argv);
 
-       OPENLOG ("grpunconv");
+       OPENLOG (Prog);
 
        process_flags (argc, argv);
 
index 1db668871b36fbb8504d52c5f14e11604a22a7e0..ed0c78c46be1cc4abe94b21bad4b3f076dd4d854 100644 (file)
@@ -39,7 +39,7 @@
 /*
  * Global variables
  */
-const char *Prog;              /* Program name */
+static const char Prog[] = "lastlog";  /* Program name */
 static FILE *lastlogfile;      /* lastlog file stream */
 static unsigned long umin;     /* if uflg and has_umin, only display users with uid >= umin */
 static bool has_umin = false;
@@ -290,7 +290,6 @@ int main (int argc, char **argv)
         * Get the program name. The program name is used as a prefix to
         * most error messages.
         */
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
index c0ae3a1b38a979cda699973f66325ea645b82506..c7d2948381325b9f6b3d599e121e97881d0c8857 100644 (file)
@@ -64,7 +64,7 @@ static pam_handle_t *pamh = NULL;
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "login";
 
 static const char *hostname = "";
 static /*@null@*/ /*@only@*/char *username = NULL;
@@ -520,7 +520,6 @@ int main (int argc, char **argv)
        initenv ();
 
        amroot = (getuid () == 0);
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
@@ -587,7 +586,7 @@ int main (int argc, char **argv)
        }
 #endif                         /* RLOGIN */
 
-       OPENLOG ("login");
+       OPENLOG (Prog);
 
        setup_tty ();
 
@@ -673,7 +672,7 @@ int main (int argc, char **argv)
        retries = getdef_unum ("LOGIN_RETRIES", RETRIES);
 
 #ifdef USE_PAM
-       retcode = pam_start ("login", username, &conv, &pamh);
+       retcode = pam_start (Prog, username, &conv, &pamh);
        if (retcode != PAM_SUCCESS) {
                fprintf (stderr,
                         _("login: PAM Failure, aborting: %s\n"),
index 3cfecaee0361d24526b43e0cf7f7d5b774640e7a..d10887bc61c04e0d36cb734665bcac7cd271678a 100644 (file)
@@ -22,7 +22,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "logoutd";
 
 #ifndef DEFAULT_HUP_MESG
 #define DEFAULT_HUP_MESG _("login time exceeded\n\n")
@@ -157,11 +157,10 @@ main(int argc, char **argv)
        /*
         * Start syslogging everything
         */
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
-       OPENLOG ("logoutd");
+       OPENLOG (Prog);
 
        /*
         * Scan the utmp file once per minute looking for users that
index 523d480ae906ac502698657eea8080ceff1fde6a..1ef71f36e7554201612af7afc09d99e5a5c948a1 100644 (file)
@@ -9,7 +9,7 @@
 
 /* Test program for the subid creation routine */
 
-const char *Prog;
+static const char Prog[] = "new_subid_range";
 
 static void usage(void)
 {
@@ -28,7 +28,6 @@ int main(int argc, char *argv[])
        bool group = false;   // get subuids by default
        bool ok;
 
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
        while ((c = getopt(argc, argv, "gn")) != EOF) {
index d6d29725ca371b685a62298349cf3cfec6d814f7..1d349598dbd674797ec509659b5bc6e46bbc5096 100644 (file)
@@ -23,7 +23,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "newgidmap";
 
 
 static bool verify_range(struct passwd *pw, struct map_range *range, bool *allow_setgroups)
@@ -151,7 +151,6 @@ int main(int argc, char **argv)
        struct passwd *pw;
        bool allow_setgroups = false;
 
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
index f786a96fad703bd8debca1ddfd8d78d3ddbad6a6..68e80fe9482078694c3a2a9f4fed6a25738c5a2a 100644 (file)
@@ -28,7 +28,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char *Prog;
 
 extern char **newenvp;
 
index e99655c9282e98708f45f2b4fbcf743d509f7e0e..5dd984f6ec9e2aca5271897eb46b90619c16fccc 100644 (file)
@@ -23,7 +23,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "newuidmap";
 
 static bool verify_range(struct passwd *pw, struct map_range *range)
 {
@@ -80,7 +80,6 @@ int main(int argc, char **argv)
        struct stat st;
        struct passwd *pw;
 
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
index 2a3dd79ec9e204f41298a49d8a29f9fda32e37f7..3cc912e082d49db25fc2e0008bba84ed297393d3 100644 (file)
@@ -54,7 +54,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "newusers";
 
 static bool rflg = false;      /* create a system account */
 #ifndef USE_PAM
@@ -1056,7 +1056,6 @@ int main (int argc, char **argv)
        unsigned int nusers = 0;
 #endif                         /* USE_PAM */
 
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
index 4549d95d7d8fc909b0ca1eed9e30d9937f1e7438..3ef0cf3feccabfc052487001407ffcd5f8c33ee7 100644 (file)
@@ -45,7 +45,7 @@
 /*
  * Global variables
  */
-const char *Prog;              /* Program name */
+static const char Prog[] = "passwd";   /* Program name */
 
 static char *name;             /* The name of user whose password is being changed */
 static char *myname;           /* The current user's name */
@@ -731,11 +731,6 @@ int main (int argc, char **argv)
 
        sanitize_env ();
 
-       /*
-        * Get the program name. The program name is used as a prefix to
-        * most error messages.
-        */
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
@@ -757,7 +752,7 @@ int main (int argc, char **argv)
         */
        amroot = (getuid () == 0);
 
-       OPENLOG ("passwd");
+       OPENLOG (Prog);
 
        {
                /*
@@ -976,7 +971,7 @@ int main (int argc, char **argv)
 #ifdef WITH_SELINUX
        /* only do this check when getuid()==0 because it's a pre-condition for
           changing a password without entering the old one */
-       if (amroot && (check_selinux_permit ("passwd") != 0)) {
+       if (amroot && (check_selinux_permit (Prog) != 0)) {
                SYSLOG ((LOG_ALERT,
                         "root is not authorized by SELinux to change the password of %s",
                         name));
index 535ba4e598a81a4ab77a9d752299b92970a2e4a8..baa24ba366f424ee3c0c1e5ac78596b643d8407f 100644 (file)
@@ -47,7 +47,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "pwck";
 
 static bool use_system_pw_file = true;
 static bool use_system_spw_file = true;
@@ -833,10 +833,6 @@ int main (int argc, char **argv)
        int errors = 0;
        bool changed = false;
 
-       /*
-        * Get my name so that I can use it to report errors.
-        */
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
@@ -846,7 +842,7 @@ int main (int argc, char **argv)
 
        process_root_flag ("-R", argc, argv);
 
-       OPENLOG ("pwck");
+       OPENLOG (Prog);
 
        /* Parse the command line arguments */
        process_flags (argc, argv);
index 0788d076a856067f27085ccdcd58aaf62c61d5b6..13d80ca6ef7e58a16c38c99c07fad61b5434415f 100644 (file)
@@ -66,7 +66,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "pwconv";
 
 static bool spw_locked = false;
 static bool pw_locked = false;
@@ -153,7 +153,6 @@ int main (int argc, char **argv)
        const struct spwd *sp;
        struct spwd spent;
 
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
@@ -163,7 +162,7 @@ int main (int argc, char **argv)
 
        process_root_flag ("-R", argc, argv);
 
-       OPENLOG ("pwconv");
+       OPENLOG (Prog);
 
        process_flags (argc, argv);
 
index b8624359d985ad0151f7801e516907d756bbf372..9bc0ab6ba8594b20cf8db72815207b2fc8b90635 100644 (file)
@@ -30,7 +30,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "pwunconv";
 
 static bool spw_locked = false;
 static bool pw_locked = false;
@@ -114,7 +114,6 @@ int main (int argc, char **argv)
        struct passwd pwent;
        const struct spwd *spwd;
 
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
@@ -124,7 +123,7 @@ int main (int argc, char **argv)
 
        process_root_flag ("-R", argc, argv);
 
-       OPENLOG ("pwunconv");
+       OPENLOG (Prog);
 
        process_flags (argc, argv);
 
index 5f5cecfb120ad9608031344112e2d5cd7e5dcb4b..8c3be34601ad1b9c0c29390490888982c13109e0 100644 (file)
--- a/src/su.c
+++ b/src/su.c
@@ -61,7 +61,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "su";
 static /*@observer@*/const char *caller_tty = NULL;    /* Name of tty SU is run from */
 static bool caller_is_root = false;
 static uid_t caller_uid;
@@ -730,11 +730,6 @@ static void save_caller_context (char **argv)
        const char *password = NULL;
 #endif                         /* SU_ACCESS */
 #endif                         /* !USE_PAM */
-       /*
-        * Get the program name. The program name is used as a prefix to
-        * most error messages.
-        */
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
@@ -1010,14 +1005,14 @@ int main (int argc, char **argv)
 
        save_caller_context (argv);
 
-       OPENLOG ("su");
+       OPENLOG (Prog);
 
        process_flags (argc, argv);
 
        initenv ();
 
 #ifdef USE_PAM
-       ret = pam_start ("su", name, &conv, &pamh);
+       ret = pam_start (Prog, name, &conv, &pamh);
        if (PAM_SUCCESS != ret) {
                SYSLOG ((LOG_ERR, "pam_start: error %d", ret);
                fprintf (stderr,
index 080b92f107e51d182cb7a2e5c1f007cd6af01ec0..d7fe5fb830311ec82e8c5bc89cdba9fd487fc150 100644 (file)
@@ -27,7 +27,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "sulogin";
 
 static char pass[BUFSIZ];
 
@@ -63,7 +63,6 @@ static void catch_signals (unused int sig)
        termio.c_lflag |= (ECHO | ECHOE | ECHOK | ICANON | ISIG);
        tcsetattr (0, TCSANOW, &termio);
 
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
        (void) setlocale (LC_ALL, "");
index 5c62dbaf65300c7a46f99a8ec314280930df5e86..896ff0dd51b40a6cc425e3b35b8c695f8102b83c 100644 (file)
@@ -82,7 +82,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "useradd";
 
 /*
  * These defaults are used if there is no defaults file.
@@ -2518,10 +2518,6 @@ int main (int argc, char **argv)
        unsigned long subuid_count = 0;
        unsigned long subgid_count = 0;
 
-       /*
-        * Get my name so that I can use it to report errors.
-        */
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
@@ -2533,7 +2529,7 @@ int main (int argc, char **argv)
 
        prefix = process_prefix_flag("-P", argc, argv);
 
-       OPENLOG ("useradd");
+       OPENLOG (Prog);
 #ifdef WITH_AUDIT
        audit_help_open ();
 #endif
@@ -2585,7 +2581,7 @@ int main (int argc, char **argv)
                        fail_exit (1);
                }
 
-               retval = pam_start ("useradd", pampw?pampw->pw_name:"root", &conv, &pamh);
+               retval = pam_start (Prog, pampw?pampw->pw_name:"root", &conv, &pamh);
        }
 
        if (PAM_SUCCESS == retval) {
index f68b91ec5c65bcb66f7a0c34d601c97c2963226a..69c6d741b475bd16d24e59be34d8e02b4aa6e47f 100644 (file)
@@ -70,7 +70,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "userdel";
 
 static char *user_name;
 static uid_t user_id;
@@ -969,10 +969,6 @@ int main (int argc, char **argv)
 #endif                         /* USE_PAM */
 #endif                         /* ACCT_TOOLS_SETUID */
 
-       /*
-        * Get my name so that I can use it to report errors.
-        */
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
        (void) setlocale (LC_ALL, "");
@@ -982,7 +978,7 @@ int main (int argc, char **argv)
        process_root_flag ("-R", argc, argv);
        prefix = process_prefix_flag ("-P", argc, argv);
 
-       OPENLOG ("userdel");
+       OPENLOG (Prog);
 #ifdef WITH_AUDIT
        audit_help_open ();
 #endif                         /* WITH_AUDIT */
@@ -1066,7 +1062,7 @@ int main (int argc, char **argv)
                        exit (E_PW_UPDATE);
                }
 
-               retval = pam_start ("userdel", pampw->pw_name, &conv, &pamh);
+               retval = pam_start (Prog, pampw->pw_name, &conv, &pamh);
        }
 
        if (PAM_SUCCESS == retval) {
index 502d31be7b5195c5b6ad3ab3cae4221ed7e2ddf4..59bd44950fe1f1959cd9bcf35c3cb95bc52d1ef7 100644 (file)
@@ -86,7 +86,7 @@
 /*
  * Global variables
  */
-const char *Prog;
+static const char Prog[] = "usermod";
 
 static char *user_name;
 static char *user_newname;
@@ -2153,10 +2153,6 @@ int main (int argc, char **argv)
 #endif                         /* USE_PAM */
 #endif                         /* ACCT_TOOLS_SETUID */
 
-       /*
-        * Get my name so that I can use it to report errors.
-        */
-       Prog = Basename (argv[0]);
        log_set_progname(Prog);
        log_set_logfd(stderr);
 
@@ -2167,7 +2163,7 @@ int main (int argc, char **argv)
        process_root_flag ("-R", argc, argv);
        prefix = process_prefix_flag ("-P", argc, argv);
 
-       OPENLOG ("usermod");
+       OPENLOG (Prog);
 #ifdef WITH_AUDIT
        audit_help_open ();
 #endif
@@ -2213,7 +2209,7 @@ int main (int argc, char **argv)
                        exit (1);
                }
 
-               retval = pam_start ("usermod", pampw->pw_name, &conv, &pamh);
+               retval = pam_start (Prog, pampw->pw_name, &conv, &pamh);
        }
 
        if (PAM_SUCCESS == retval) {