source:
trunk/patches/acl_sloppy_group.patch
@
5
Last change on this file since 5 was 5, checked in by bas, 17 years ago | |
---|---|
File size: 1.8 KB |
-
src/server/svr_jobfunc.c
1015 1015 int failed_group_acl = 0; 1016 1016 int failed_user_acl = 0; 1017 1017 1018 /* HvB */ 1019 struct array_strings *pas; 1020 int j=0; 1021 1018 1022 if (EMsg != NULL) 1019 1023 EMsg[0] = '\0'; 1020 1024 … … 1089 1093 (!(pjob->ji_wattr[(int)JOB_ATR_grouplst].at_flags & ATR_VFLAG_SET))) 1090 1094 { 1091 1095 /* check group acl against all accessible groups */ 1092 1093 1096 struct group *grp; 1094 1097 int i; 1095 1098 … … 1097 1100 1098 1101 strncpy(uname,pjob->ji_wattr[(int)JOB_ATR_euser].at_val.at_str,PBS_MAXUSER); 1099 1102 1100 setgrent();1101 1102 1103 /* walk all groups looking for matching user membership */ 1103 1104 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 } 1126 1125 1127 endgrent(); 1126 } 1128 1127 } /* END if (rc == 0) && AclGroupSloppy...) */ 1129 1128 1130 1129 if (rc == 0)
Note: See TracBrowser
for help on using the repository browser.