source: trunk/patches/acl_sloppy_group.patch @ 5

Last change on this file since 5 was 5, checked in by bas, 17 years ago

First import for the OSS torque_2_deb project

File size: 1.8 KB
  • src/server/svr_jobfunc.c

     
    10151015  int failed_group_acl = 0;
    10161016  int failed_user_acl  = 0;
    10171017
     1018  /* HvB */
     1019  struct array_strings *pas;
     1020  int j=0;
     1021
    10181022  if (EMsg != NULL)
    10191023    EMsg[0] = '\0';
    10201024
     
    10891093          (!(pjob->ji_wattr[(int)JOB_ATR_grouplst].at_flags & ATR_VFLAG_SET)))
    10901094        {
    10911095        /* check group acl against all accessible groups */
    1092 
    10931096        struct group *grp;
    10941097        int i;
    10951098
     
    10971100
    10981101        strncpy(uname,pjob->ji_wattr[(int)JOB_ATR_euser].at_val.at_str,PBS_MAXUSER);
    10991102
    1100         setgrent();
    1101 
    11021103        /* walk all groups looking for matching user membership */
    11031104
    1104         while ((grp = getgrent()))
    1105           {
    1106           for (i = 0;grp->gr_mem[i] != NULL;i++)
    1107             {
    1108             if (strcmp(grp->gr_mem[i],uname))
    1109               continue;
    1110 
    1111             rc = acl_check(
    1112               &pque->qu_attr[QA_ATR_AclGroup],
    1113               grp->gr_name,
    1114               ACL_Gid);
    1115 
    1116             break;
    1117             }
    1118 
    1119           if (rc != 0)
    1120             {
    1121             /* match found */
    1122 
    1123             break;
    1124             }
    1125           }  /* END while (grp) */
     1105        pas =  pque->qu_attr[QA_ATR_AclGroup].at_val.at_arst;
     1106        for (i=0; i<pas->as_usedptr; i++)
     1107        {
     1108                /* HvB debug info
     1109                printf("pas->as_usedptr = %d\n", pas->as_usedptr);
     1110                printf("pas->as_usedptr = %s, %d\n", pas->as_string[i], i);
     1111                */
     1112                if ( (grp = getgrnam(pas->as_string[i])) != NULL)
     1113                {
     1114                        j = 0;
     1115                        while(grp->gr_mem[j] != NULL)
     1116                        {
     1117                                if (!strcmp(grp->gr_mem[j], uname))
     1118                                {
     1119                                        rc = 1;
     1120                                        break;
     1121                                }
     1122                                j++;
     1123                        }
     1124                }
    11261125
    1127         endgrent();
     1126        }
    11281127        }    /* END if (rc == 0) && AclGroupSloppy...) */
    11291128
    11301129      if (rc == 0)
Note: See TracBrowser for help on using the repository browser.