Changeset 16 in openpam for trunk/bin


Ignore:
Timestamp:
Feb 1, 2002, 10:20:07 PM (19 years ago)
Author:
Dag-Erling Smørgrav
Message:

Whitespace cleanup + keyword expansion sweep.

Sponsored by: DARPA, NAI Labs

Location:
trunk/bin
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/bin/Makefile

    • Property svn:keywords set to Id LastChangedRevision HeadURL LastChangedDate LastChangedBy
  • trunk/bin/su/Makefile

    • Property svn:keywords set to Id LastChangedRevision HeadURL LastChangedDate LastChangedBy
  • trunk/bin/su/su.c

    • Property svn:keywords set to Id LastChangedRevision HeadURL LastChangedDate LastChangedBy
    r15 r16  
    5353usage(void)
    5454{
    55         fprintf(stderr, "Usage: su [login [args]]\n");
    56         exit(1);
     55
     56        fprintf(stderr, "Usage: su [login [args]]\n");
     57        exit(1);
    5758}
    5859
     
    6061check(const char *func, int pam_err)
    6162{
    62         if (pam_err == PAM_SUCCESS || pam_err == PAM_NEW_AUTHTOK_REQD)
    63                 return pam_err;
    64         openlog("su", LOG_CONS, LOG_AUTH);
    65         syslog(LOG_ERR, "%s(): %s", func, pam_strerror(pamh, pam_err));
    66         errx(1, "Sorry.");
     63
     64        if (pam_err == PAM_SUCCESS || pam_err == PAM_NEW_AUTHTOK_REQD)
     65                return pam_err;
     66        openlog("su", LOG_CONS, LOG_AUTH);
     67        syslog(LOG_ERR, "%s(): %s", func, pam_strerror(pamh, pam_err));
     68        errx(1, "Sorry.");
    6769}
    6870
     
    7072main(int argc, char *argv[])
    7173{
    72         char hostname[MAXHOSTNAMELEN];
    73         const char *user, *tty;
     74        char hostname[MAXHOSTNAMELEN];
     75        const char *user, *tty;
    7476        struct passwd *pwd;
    75         int o, status;
    76         pid_t pid;
     77        int o, status;
     78        pid_t pid;
    7779
    78         while ((o = getopt(argc, argv, "h")) != -1)
    79                 switch (o) {
    80                 case 'h':
    81                 default:
    82                         usage();
    83                 }
     80        while ((o = getopt(argc, argv, "h")) != -1)
     81                switch (o) {
     82                case 'h':
     83                default:
     84                        usage();
     85                }
    8486
    85         argc -= optind;
    86         argv += optind;
     87        argc -= optind;
     88        argv += optind;
    8789
    88         /* initialize PAM */
    89         pamc.conv = &openpam_ttyconv;
     90        /* initialize PAM */
     91        pamc.conv = &openpam_ttyconv;
    9092        pam_start("su", argc ? *argv : "root", &pamc, &pamh);
    9193
    92         /* set some items */
    93         gethostname(hostname, sizeof hostname);
    94         check("pam_set_item", pam_set_item(pamh, PAM_RHOST, hostname));
    95         user = getlogin();
    96         check("pam_set_item", pam_set_item(pamh, PAM_RUSER, user));
    97         tty = ttyname(STDERR_FILENO);
    98         check("pam_set_item", pam_set_item(pamh, PAM_TTY, tty));
     94        /* set some items */
     95        gethostname(hostname, sizeof hostname);
     96        check("pam_set_item", pam_set_item(pamh, PAM_RHOST, hostname));
     97        user = getlogin();
     98        check("pam_set_item", pam_set_item(pamh, PAM_RUSER, user));
     99        tty = ttyname(STDERR_FILENO);
     100        check("pam_set_item", pam_set_item(pamh, PAM_TTY, tty));
    99101
    100         /* authenticate the applicant */
    101         check("pam_authenticate", pam_authenticate(pamh, 0));
    102         if (check("pam_acct_mgmt", pam_acct_mgmt(pamh, 0)) ==
    103             PAM_NEW_AUTHTOK_REQD)
    104                 check("pam_chauthtok",
    105                     pam_chauthtok(pamh, PAM_CHANGE_EXPIRED_AUTHTOK));
    106        
    107         /* establish the requested credentials */
    108         check("pam_setcred", pam_setcred(pamh, PAM_ESTABLISH_CRED));
    109        
    110         /* authentication succeeded; open a session */
    111         check("pam_open_session", pam_open_session(pamh, 0));
     102        /* authenticate the applicant */
     103        check("pam_authenticate", pam_authenticate(pamh, 0));
     104        if (check("pam_acct_mgmt", pam_acct_mgmt(pamh, 0)) ==
     105            PAM_NEW_AUTHTOK_REQD)
     106                check("pam_chauthtok",
     107                    pam_chauthtok(pamh, PAM_CHANGE_EXPIRED_AUTHTOK));
     108
     109        /* establish the requested credentials */
     110        check("pam_setcred", pam_setcred(pamh, PAM_ESTABLISH_CRED));
     111
     112        /* authentication succeeded; open a session */
     113        check("pam_open_session", pam_open_session(pamh, 0));
    112114
    113115        if (initgroups(pwd->pw_name, pwd->pw_gid) == -1)
     
    115117        if (setuid(pwd->pw_uid) == -1)
    116118                err(1, "setuid()");
    117        
     119
    118120        /* XXX export environment variables */
    119        
    120         switch ((pid = fork())) {
    121         case -1:
    122                 err(1, "fork()");
    123         case 0:
    124                 /* child: start a shell */
    125                 *argv = pwd->pw_shell;
    126                 execvp(*argv, argv);
    127                 err(1, "execvp()");
    128         default:
    129                 /* parent: wait for child to exit */
    130                 waitpid(pid, &status, 0);
    131                 if (WIFEXITED(status))
    132                         status = WEXITSTATUS(status);
    133                 else
    134                         status = 1;
    135         }
    136121
    137         /* close the session and release PAM resources */
    138         check("pam_close_session", pam_close_session(pamh, 0));
    139         check("pam_end", pam_end(pamh, 0));
     122        switch ((pid = fork())) {
     123        case -1:
     124                err(1, "fork()");
     125        case 0:
     126                /* child: start a shell */
     127                *argv = pwd->pw_shell;
     128                execvp(*argv, argv);
     129                err(1, "execvp()");
     130        default:
     131                /* parent: wait for child to exit */
     132                waitpid(pid, &status, 0);
     133                if (WIFEXITED(status))
     134                        status = WEXITSTATUS(status);
     135                else
     136                        status = 1;
     137        }
    140138
    141         exit(status);
     139        /* close the session and release PAM resources */
     140        check("pam_close_session", pam_close_session(pamh, 0));
     141        check("pam_end", pam_end(pamh, 0));
     142
     143        exit(status);
    142144}
Note: See TracChangeset for help on using the changeset viewer.