source: trunk/patches/pam_pbssimpleauth_4_X.patch @ 61

Last change on this file since 61 was 61, checked in by bas, 12 years ago

added a new pam_pbssimpleauth patch for torque 4
added trqauth_syslog.patch

init.d start trqauthd daemon in --background else package installer hangs

File size: 3.9 KB
  • src/pam/pam_pbssimpleauth.c

     
    3636#define PAM_SM_AUTH
    3737#define PAM_SM_ACCOUNT
    3838
     39/*
     40 * HVB: add for pam_syslog
     41*/
     42#include <security/pam_ext.h>
     43
    3944#ifdef HAVE_SECURITY_PAM_APPL_H
    4045#include <security/pam_appl.h>
    4146#endif
     
    7782  char jobdirpath[PATH_MAX+1];
    7883  int debug = 0;
    7984
    80   openlog(MODNAME, LOG_PID, LOG_USER);
    8185  strcpy(jobdirpath, PBS_SERVER_HOME "/mom_priv/jobs");
    8286
    8387  /* step through arguments */
     
    8993    else if (!strcmp(*argv, "jobdir"))
    9094      strncpy(jobdirpath, *argv, PATH_MAX);
    9195    else
    92       syslog(LOG_ERR, "unknown option: %s", *argv);
     96      pam_syslog(pamh, LOG_ERR, "unknown option: %s", *argv);
    9397    }
    9498
    95   if (debug) syslog(LOG_INFO, "opening %s", jobdirpath);
     99  if (debug) pam_syslog(pamh, LOG_INFO, "opening %s", jobdirpath);
    96100
    97101  if ((jobdir = opendir(jobdirpath)) == NULL)
    98102    {
    99     if (debug) syslog(LOG_INFO, "failed to open jobs dir: %s", strerror(errno));
     103    if (debug) pam_syslog(pamh, LOG_INFO, "failed to open jobs dir: %s", strerror(errno));
    100104
    101     closelog();
    102105
    103106    return PAM_IGNORE;
    104107    }
     
    109112#if defined(PAM_CONV_AGAIN) && defined(PAM_INCOMPLETE)
    110113  if (retval == PAM_CONV_AGAIN)
    111114    {
    112     closelog();
    113115    return PAM_INCOMPLETE;
    114116    }
    115117
     
    117119
    118120  if ((retval != PAM_SUCCESS) || !username)
    119121    {
    120     syslog(LOG_ERR, "failed to retrieve username");
    121     closelog();
     122    pam_syslog(pamh, LOG_ERR, "failed to retrieve username");
    122123    return PAM_SERVICE_ERR;
    123124    }
    124125
     
    126127
    127128  /* no early returns from this point on because we need to free ubuf */
    128129
    129   if (debug) syslog(LOG_INFO, "username %s, %s", username, user_pwd ? "known" : "unknown");
     130  if (debug) pam_syslog(pamh, LOG_INFO, "username %s, %s", username, user_pwd ? "known" : "unknown");
    130131
    131132  if (!user_pwd)
    132133    {
     
    134135    }
    135136  else if (user_pwd->pw_uid == 0)
    136137    {
    137     if (debug) syslog(LOG_INFO, "allowing uid 0");
     138    if (debug) pam_syslog(pamh, LOG_INFO, "allowing uid 0");
    138139
    139140    retval = PAM_SUCCESS;
    140141    }
     
    149150
    150151      snprintf(jobpath, PATH_MAX - 1, "%s/%s", jobdirpath, jdent->d_name);
    151152
    152       if (debug) syslog(LOG_INFO, "opening %s", jobpath);
     153      if (debug) pam_syslog(pamh, LOG_INFO, "opening %s", jobpath);
    153154
    154155      fp = open(jobpath, O_RDONLY, 0);
    155156
    156157      if (fp < 0)
    157158        {
    158         syslog(LOG_ERR, "error opening job file");
     159        pam_syslog(pamh, LOG_ERR, "error opening job file");
    159160        continue;
    160161        }
    161162
     
    164165      if (amt != sizeof(xjob.ji_qs))
    165166        {
    166167        close(fp);
    167         syslog(LOG_ERR, "short read of job file");
     168        pam_syslog(pamh, LOG_ERR, "short read of job file");
    168169        continue;
    169170        }
    170171
     
    172173        {
    173174        /* odd, this really should be JOB_UNION_TYPE_MOM */
    174175        close(fp);
    175         syslog(LOG_ERR, "job file corrupt");
     176        pam_syslog(pamh, LOG_ERR, "job file corrupt");
    176177        continue;
    177178        }
    178179
    179       if (debug) syslog(LOG_INFO, "state=%d, substate=%d", xjob.ji_qs.ji_state, xjob.ji_qs.ji_substate);
     180      if (debug) pam_syslog(pamh, LOG_INFO, "state=%d, substate=%d", xjob.ji_qs.ji_state, xjob.ji_qs.ji_substate);
    180181
    181182      if ((xjob.ji_qs.ji_un.ji_momt.ji_exuid == user_pwd->pw_uid) &&
    182183          ((xjob.ji_qs.ji_substate == JOB_SUBSTATE_PRERUN) ||
     
    186187        /* success! */
    187188        close(fp);
    188189
    189         if (debug) syslog(LOG_INFO, "allowed by %s", jdent->d_name);
     190        if (debug) pam_syslog(pamh, LOG_INFO, "allowed by %s", jdent->d_name);
    190191
    191192        retval = PAM_SUCCESS;
    192193
     
    203204  if (ubuf)
    204205    free(ubuf);
    205206
    206   if (debug) syslog(LOG_INFO, "returning %s", retval == PAM_SUCCESS ? "success" : "failed");
     207  if (debug) pam_syslog(pamh, LOG_INFO, "returning %s", retval == PAM_SUCCESS ? "success" : "failed");
    207208
    208   closelog();
    209209
    210210  return retval;
    211211  }
Note: See TracBrowser for help on using the repository browser.