Spot inconsistent quoting (just one single quote) (#4732)
authorTobias Stoeckmann <stoeckmann@users.noreply.github.com>
Thu, 1 Dec 2016 23:46:36 +0000 (00:46 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 1 Dec 2016 23:46:36 +0000 (18:46 -0500)
It is possible to specify only one quote in udev rules, which is not
detected as an invalid quoting (" instead of "" for empty string).

Technically this doesn't lead to a bug, because the string ends in two
terminating nul characters at this position, but a user should still be
reminded that his configuration is invalid.

src/libudev/libudev.c
src/udev/udev-rules.c

index 63fb055..57ce749 100644 (file)
@@ -156,7 +156,7 @@ _public_ struct udev *udev_new(void) {
 
                         /* unquote */
                         if (val[0] == '"' || val[0] == '\'') {
-                                if (val[len-1] != val[0]) {
+                                if (len == 1 || val[len-1] != val[0]) {
                                         log_debug("/etc/udev/udev.conf:%u: inconsistent quoting, skipping line.", line_nr);
                                         continue;
                                 }
index f6c416b..d88687e 100644 (file)
@@ -614,7 +614,7 @@ static int import_property_from_string(struct udev_device *dev, char *line) {
 
         /* unquote */
         if (val[0] == '"' || val[0] == '\'') {
-                if (val[len-1] != val[0]) {
+                if (len == 1 || val[len-1] != val[0]) {
                         log_debug("inconsistent quoting: '%s', skip", line);
                         return -1;
                 }