X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udev_rules_parse.c;h=8d69e74864310e5f584f2d490402b914aeb92dd2;hb=878b47da74dd0f24741ced985d4f8cdc058c9f42;hp=271de6f87968c4d8aa897e592248a9d6cf830944;hpb=891205121395acbe84eb6173670ce7934cd9b1c6;p=elogind.git diff --git a/udev_rules_parse.c b/udev_rules_parse.c index 271de6f87..8d69e7486 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;