summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtest/udev-test.pl12
-rw-r--r--udev_rules_parse.c14
2 files changed, 19 insertions, 7 deletions
diff --git a/test/udev-test.pl b/test/udev-test.pl
index 9a88d06271..63715ac093 100755
--- a/test/udev-test.pl
+++ b/test/udev-test.pl
@@ -1500,6 +1500,18 @@ KERNEL="sda1", NAME=="no"
KERNEL=="sda1", NAME="yes"
EOF
},
+ {
+ desc => "overlong comment line",
+ subsys => "block",
+ devpath => "/block/sda/sda1",
+ exp_name => "yes",
+ rules => <<EOF
+# 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
+ # 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
+KERNEL="sda1", NAME=="no"
+KERNEL=="sda1", NAME="yes"
+EOF
+ },
);
# set env
diff --git a/udev_rules_parse.c b/udev_rules_parse.c
index 271de6f879..8d69e74864 100644
--- a/udev_rules_parse.c
+++ b/udev_rules_parse.c
@@ -543,7 +543,7 @@ static int add_to_rules(struct udev_rules *rules, char *line, const char *filena
continue;
}
- err("unknown key '%s'", key);
+ err("unknown key '%s' in %s:%u", key, filename, lineno);
}
/* skip line if not any valid key was found */
@@ -603,11 +603,6 @@ static int parse_file(struct udev_rules *rules, const char *filename)
cur += count+1;
lineno++;
- if (count >= sizeof(line)) {
- err("line too long, rule skipped '%s:%u'", filename, lineno);
- continue;
- }
-
/* eat the whitespace */
while ((count > 0) && isspace(bufline[0])) {
bufline++;
@@ -620,7 +615,12 @@ static int parse_file(struct udev_rules *rules, const char *filename)
if (bufline[0] == COMMENT_CHARACTER)
continue;
- /* skip backslash and newline from multi line rules */
+ if (count >= sizeof(line)) {
+ err("line too long, rule skipped '%s:%u'", filename, lineno);
+ continue;
+ }
+
+ /* skip backslash and newline from multiline rules */
for (i = j = 0; i < count; i++) {
if (bufline[i] == '\\' && bufline[i+1] == '\n')
continue;