}
if (strncasecmp(key, "TEST", sizeof("TEST")-1) == 0) {
+ if (operation != KEY_OP_MATCH &&
+ operation != KEY_OP_NOMATCH) {
+ err("invalid TEST operation");
+ goto invalid;
+ }
attr = get_key_attribute(key + sizeof("TEST")-1);
if (attr != NULL)
rule->test_mode_mask = strtol(attr, NULL, 8);
}
if (strcasecmp(key, "SYMLINK") == 0) {
- add_rule_key(rule, &rule->symlink, operation, value);
+ if (operation == KEY_OP_MATCH ||
+ operation == KEY_OP_NOMATCH)
+ add_rule_key(rule, &rule->symlink_match, operation, value);
+ else
+ add_rule_key(rule, &rule->symlink, operation, value);
valid = 1;
continue;
}
if (name_base == NULL)
continue;
- if (strcmp(name_base, dyn_base) > 0) {
- list_move_tail(&dyn_loop->node, &name_loop->node);
+ if (strcmp(name_base, dyn_base) > 0)
break;
- }
}
+ list_move_tail(&dyn_loop->node, &name_loop->node);
}
/* parse list of files */
rules->buf = NULL;
}
}
+