summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKay Sievers <kay.sievers@suse.de>2006-08-20 18:15:29 +0200
committerKay Sievers <kay.sievers@suse.de>2006-08-20 18:15:29 +0200
commit38895e573c6f17014393dc35a9e53d5f016172c3 (patch)
treee30c5e7bcf4dbba5dc9704689f1fefb9e61aa7dc
parent95776dc6ec174f47fa4dd4d8abf5d457223e5dd4 (diff)
skip rule, if too may keys of the same type are used
-rwxr-xr-xtest/udev-test.pl2
-rw-r--r--udev_rules_parse.c19
2 files changed, 12 insertions, 9 deletions
diff --git a/test/udev-test.pl b/test/udev-test.pl
index c1c5302caf..c7662326ea 100755
--- a/test/udev-test.pl
+++ b/test/udev-test.pl
@@ -79,7 +79,7 @@ EOF
devpath => "/block/sda/sda1",
exp_name => "boot_disk1" ,
rules => <<EOF
-BUS=="scsi", SYSFS{vendor}=="IBM-ESXS", SYSFS{model}=="ST336605LW !#", SYSFS{scsi_level}=="4", SYSFS{rev}=="B245", SYSFS{type}=="2", SYSFS{queue_depth}=="32", NAME="boot_diskXX%n"
+BUS=="scsi", SYSFS{vendor}=="IBM-ESXS", SYSFS{model}=="ST336605LW !#", SYSFS{scsi_level}=="4", SYSFS{rev}=="B245", SYSFS{type}=="0", SYSFS{queue_depth}=="32", NAME="boot_diskXX%n"
BUS=="scsi", SYSFS{vendor}=="IBM-ESXS", SYSFS{model}=="ST336605LW !#", SYSFS{scsi_level}=="4", SYSFS{rev}=="B245", SYSFS{type}=="0", NAME="boot_disk%n"
EOF
},
diff --git a/udev_rules_parse.c b/udev_rules_parse.c
index 5e93e60d4f..d527bf4bad 100644
--- a/udev_rules_parse.c
+++ b/udev_rules_parse.c
@@ -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;
}