X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fudev-rules.c;h=a5b4b7306affd07bca819add89adddd8ff05c0ca;hp=8efc498f75a1753f5ff6871202f4e7fdc38fe27d;hb=3840d318011a20960119ff8dff1f67825b2ca0f1;hpb=a1525d172014e66f97d82fc1e9096444597abcc7 diff --git a/src/udev-rules.c b/src/udev-rules.c index 8efc498f7..a5b4b7306 100644 --- a/src/udev-rules.c +++ b/src/udev-rules.c @@ -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",