Home | History | Annotate | Download | only in fstest

Lines Matching refs:pr

104     perm_rule_t *pr = malloc(sizeof(perm_rule_t));
105 if (!pr) {
118 pr->rule_text = strndup(rule_text_buf, sizeof(rule_text_buf));
119 pr->rule_line = line_num;
121 pr->spec = strndup(spec, strlen(spec) - 3);
122 pr->type = RECURSIVE;
124 pr->spec = strndup(spec, strlen(spec) - 1);
125 pr->type = WILDCARD;
127 pr->spec = strdup(spec);
128 pr->type = EXACT_DIR;
130 pr->spec = strdup(spec);
131 pr->type = EXACT_FILE;
133 if ((pr->spec == NULL) || (pr->rule_text == NULL)) {
137 pr->min_mode = min_mode;
138 pr->max_mode = max_mode;
139 pr->min_uid = str2uid(min_uid_buf, line_num);
140 pr->max_uid = str2uid(max_uid_buf, line_num);
141 pr->min_gid = str2gid(min_gid_buf, line_num);
142 pr->max_gid = str2gid(max_gid_buf, line_num);
145 pr->next = rules[pr->type];
146 rules[pr->type] = pr;
150 num_rules, pr->type, pr->spec, pr->min_mode, pr->max_mode,
151 pr->min_uid, pr->max_uid, pr->min_gid, pr->max_gid);
195 static void print_failed_rule(const perm_rule_t *pr)
197 printf("# INFO # Failed rule #%d: %s\n", pr->rule_line, pr->rule_text);
211 static int pass_rule(const perm_rule_t *pr, mode_t mode, uid_t uid, gid_t gid)
213 if (((pr->min_mode & mode) == pr->min_mode) &&
214 ((pr->max_mode | mode) == pr->max_mode) &&
215 (pr->min_gid <= gid) && (pr->max_gid >= gid) &&
216 (pr->min_uid <= uid) && (pr->max_uid >= uid))
218 print_failed_rule(pr);
225 perm_rule_t *pr;
229 pr = rules[EXACT_FILE];
230 while (pr != NULL) {
231 if (strcmp(name, pr->spec) == 0) {
232 if (!pass_rule(pr, mode, uid, gid))
237 pr = pr->next;
249 pr = rules[WILDCARD];
250 while (pr != NULL) {
253 if ((strstr(name, pr->spec) == name) &&
254 (!strchr(name + strlen(pr->spec), '/'))) {
255 if (!pass_rule(pr, mode, uid, gid))
260 pr = pr->next;
263 pr = rules[RECURSIVE];
264 while (pr != NULL) {
265 if (strstr(name, pr->spec) == name) {
266 if (!pass_rule(pr, mode, uid, gid))
271 pr = pr->next;
286 perm_rule_t *pr;
291 pr = rules[EXACT_FILE];
292 while (pr != NULL) {
293 if (strcmp(name, pr->spec) == 0) {
294 if (!pass_rule(pr, mode, uid, gid))
299 pr = pr->next;
314 perm_rule_t *pr;
318 pr = rules[EXACT_DIR];
319 while (pr != NULL) {
320 if (strcmp(name, pr->spec) == 0) {
321 if (!pass_rule(pr, mode, uid, gid))
326 pr = pr->next;
338 pr = rules[RECURSIVE];
339 while (pr != NULL) {
340 if (strstr(name, pr->spec) == name) {
341 if (!pass_rule(pr, mode, uid, gid))
346 pr = pr->next;