chiark / gitweb /
encode db-file names, instead of just replacing '/'
[elogind.git] / udev_rules_parse.c
index 00b53285faf7796bce19e14d1b792a376955046b..5ce91df383dfdb5c924b7008549b6d7b8679d70c 100644 (file)
@@ -104,12 +104,9 @@ static int get_key(char **line, char **key, enum key_operation *operation, char
                        break;
                if (linepos[0] == '=')
                        break;
-               if (linepos[0] == '+')
-                       break;
-               if (linepos[0] == '!')
-                       break;
-               if (linepos[0] == ':')
-                       break;
+               if ((linepos[0] == '+') || (linepos[0] == '!') || (linepos[0] == ':'))
+                       if (linepos[1] == '=')
+                               break;
        }
 
        /* remember end of key */
@@ -307,6 +304,11 @@ static int add_to_rules(struct udev_rules *rules, char *line, const char *filena
                }
 
                if (strcasecmp(key, "DRIVER") == 0) {
+                       if (operation != KEY_OP_MATCH &&
+                           operation != KEY_OP_NOMATCH) {
+                               err("invalid DRIVER operation");
+                               goto invalid;
+                       }
                        add_rule_key(rule, &rule->driver, operation, value);
                        valid = 1;
                        continue;