chiark / gitweb /
skip rule, if too may keys of the same type are used
[elogind.git] / udev_rules_parse.c
index 5e93e60d4f97f906cc216f522cbed3b9aac3cdb7..d527bf4bad4a51c8ee397d697124d6a0042217a7 100644 (file)
@@ -329,10 +329,11 @@ static int add_to_rules(struct udev_rules *rules, char *line, const char *filena
                        }
                        attr = get_key_attribute(key + sizeof("ATTR")-1);
                        if (attr == NULL) {
-                               err("error parsing ATTR attribute in '%s'", line);
-                               continue;
+                               err("error parsing ATTR attribute");
+                               goto invalid;
                        }
-                       add_rule_key_pair(rule, &rule->attr, operation, attr, value);
+                       if (add_rule_key_pair(rule, &rule->attr, operation, attr, value) != 0)
+                               goto invalid;
                        valid = 1;
                        continue;
                }
@@ -381,10 +382,11 @@ static int add_to_rules(struct udev_rules *rules, char *line, const char *filena
                        }
                        attr = get_key_attribute(key + sizeof("ATTRS")-1);
                        if (attr == NULL) {
-                               err("error parsing ATTRS attribute in '%s'", line);
-                               continue;
+                               err("error parsing ATTRS attribute");
+                               goto invalid;
                        }
-                       add_rule_key_pair(rule, &rule->attrs, operation, attr, value);
+                       if (add_rule_key_pair(rule, &rule->attrs, operation, attr, value) != 0)
+                               goto invalid;
                        valid = 1;
                        continue;
                }
@@ -393,9 +395,10 @@ static int add_to_rules(struct udev_rules *rules, char *line, const char *filena
                        attr = get_key_attribute(key + sizeof("ENV")-1);
                        if (attr == NULL) {
                                err("error parsing ENV attribute");
-                               continue;
+                               goto invalid;
                        }
-                       add_rule_key_pair(rule, &rule->env, operation, attr, value);
+                       if (add_rule_key_pair(rule, &rule->env, operation, attr, value) != 0)
+                               goto invalid;
                        valid = 1;
                        continue;
                }