dump_token(rules, &rules->tokens[i]);
}
#else
-static inline const char *operation_str(enum operation_type type) { return NULL; }
-static inline const char *token_str(enum token_type type) { return NULL; }
static inline void dump_token(struct udev_rules *rules, struct token *token) {}
static inline void dump_rules(struct udev_rules *rules) {}
#endif /* DEBUG */
}
if (startswith(key, "ATTR{")) {
- attr = get_key_attribute(rules->udev, key + sizeof("ATTR")-1);
+ attr = get_key_attribute(rules->udev, key + strlen("ATTR"));
if (attr == NULL) {
log_error("error parsing ATTR attribute");
goto invalid;
}
if (startswith(key, "SECLABEL{")) {
- attr = get_key_attribute(rules->udev, key + sizeof("SECLABEL")-1);
+ attr = get_key_attribute(rules->udev, key + strlen("SECLABEL"));
if (!attr) {
log_error("error parsing SECLABEL attribute");
goto invalid;
log_error("invalid ATTRS operation");
goto invalid;
}
- attr = get_key_attribute(rules->udev, key + sizeof("ATTRS")-1);
+ attr = get_key_attribute(rules->udev, key + strlen("ATTRS"));
if (attr == NULL) {
log_error("error parsing ATTRS attribute");
goto invalid;
}
if (startswith(key, "ENV{")) {
- attr = get_key_attribute(rules->udev, key + sizeof("ENV")-1);
+ attr = get_key_attribute(rules->udev, key + strlen("ENV"));
if (attr == NULL) {
log_error("error parsing ENV attribute");
goto invalid;
}
if (startswith(key, "IMPORT")) {
- attr = get_key_attribute(rules->udev, key + sizeof("IMPORT")-1);
+ attr = get_key_attribute(rules->udev, key + strlen("IMPORT"));
if (attr == NULL) {
log_error("IMPORT{} type missing, ignoring IMPORT %s:%u", filename, lineno);
continue;
log_error("invalid TEST operation");
goto invalid;
}
- attr = get_key_attribute(rules->udev, key + sizeof("TEST")-1);
+ attr = get_key_attribute(rules->udev, key + strlen("TEST"));
if (attr != NULL) {
mode = strtol(attr, NULL, 8);
rule_add_key(&rule_tmp, TK_M_TEST, op, value, &mode);
}
if (startswith(key, "RUN")) {
- attr = get_key_attribute(rules->udev, key + sizeof("RUN")-1);
+ attr = get_key_attribute(rules->udev, key + strlen("RUN"));
if (attr == NULL)
attr = "program";
char **files, **f;
int r;
- rules = calloc(1, sizeof(struct udev_rules));
+ rules = new0(struct udev_rules, 1);
if (rules == NULL)
return NULL;
rules->udev = udev;
case TK_M_PROGRAM: {
char program[UTIL_PATH_SIZE];
char **envp;
- char result[UTIL_PATH_SIZE];
+ char result[UTIL_LINE_SIZE];
free(event->program_result);
event->program_result = NULL;
struct stat stats;
/* we assure, that the permissions tokens are sorted before the static token */
+
if (mode == 0 && uid == 0 && gid == 0 && tags == NULL)
goto next;
strscpyl(device_node, sizeof(device_node), "/dev/", rules_str(rules, cur->key.value_off), NULL);
+ if (stat(device_node, &stats) != 0)
+ break;
+ if (!S_ISBLK(stats.st_mode) && !S_ISCHR(stats.st_mode))
+ break;
/* export the tags to a directory as symlinks, allowing otherwise dead nodes to be tagged */
if (tags) {
if (mode == 0 && uid == 0 && gid == 0)
break;
- if (stat(device_node, &stats) != 0)
- break;
- if (!S_ISBLK(stats.st_mode) && !S_ISCHR(stats.st_mode))
- break;
-
if (mode == 0) {
if (gid > 0)
mode = 0660;