]> err.no Git - systemd/commitdiff
print warning when rules try to rename kernel device nodes
authorKay Sievers <kay.sievers@vrfy.org>
Mon, 23 Jan 2012 04:00:59 +0000 (05:00 +0100)
committerKay Sievers <kay.sievers@vrfy.org>
Mon, 23 Jan 2012 04:15:12 +0000 (05:15 +0100)
src/udev-rules.c

index 8efc498f75a1753f5ff6871202f4e7fdc38fe27d..a5b4b7306affd07bca819add89adddd8ff05c0ca 100644 (file)
@@ -2546,6 +2546,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
                 }
                 case TK_A_NAME: {
                         const char *name  = &rules->buf[cur->key.value_off];
+
                         char name_str[UTIL_PATH_SIZE];
                         int count;
 
@@ -2559,6 +2560,16 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
                                 if (count > 0)
                                         info(event->udev, "%i character(s) replaced\n", count);
                         }
+                        if (major(udev_device_get_devnum(event->dev))) {
+                                size_t devlen = strlen(udev_get_dev_path(event->udev))+1;
+
+                                if (strcmp(name_str, &udev_device_get_devnode(event->dev)[devlen]) != 0) {
+                                        err(event->udev, "NAME=\"%s\" ignored, kernel device nodes "
+                                            "can not be renamed; please fix it in %s:%u\n", name,
+                                            &rules->buf[rule->rule.filename_off], rule->rule.filename_line);
+                                        break;
+                                }
+                        }
                         free(event->name);
                         event->name = strdup(name_str);
                         info(event->udev, "NAME '%s' %s:%u\n",