diff options
Diffstat (limited to 'udev')
-rw-r--r-- | udev/udev-node.c | 4 | ||||
-rw-r--r-- | udev/udev-watch.c | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/udev/udev-node.c b/udev/udev-node.c index ceb1d52ea7..5c1b04b86c 100644 --- a/udev/udev-node.c +++ b/udev/udev-node.c @@ -163,8 +163,8 @@ static int node_symlink(struct udev *udev, const char *node, const char *slink) int len; dbg(udev, "found existing symlink '%s'\n", slink); - len = readlink(slink, buf, sizeof(buf) - 1); - if (len > 0) { + len = readlink(slink, buf, sizeof(buf)); + if (len > 0 && len < (int)sizeof(buf)) { buf[len] = '\0'; if (strcmp(target, buf) == 0) { info(udev, "preserve already existing symlink '%s' to '%s'\n", diff --git a/udev/udev-watch.c b/udev/udev-watch.c index 7135d9f472..5fa60101c4 100644 --- a/udev/udev-watch.c +++ b/udev/udev-watch.c @@ -81,7 +81,7 @@ void udev_watch_restore(struct udev *udev) s = device; l = util_strpcpy(&s, sizeof(device), udev_get_sys_path(udev)); len = readlinkat(dirfd(dir), ent->d_name, s, l); - if (len <= 0 || len >= (ssize_t)l) + if (len <= 0 || len == (ssize_t)l) goto unlink; s[len] = '\0'; @@ -173,7 +173,7 @@ struct udev_device *udev_watch_lookup(struct udev *udev, int wd) s = majmin; l = util_strpcpy(&s, sizeof(majmin), udev_get_sys_path(udev)); len = readlink(filename, s, l); - if (len < 0 || (size_t)len >= l) + if (len <= 0 || (size_t)len == l) return NULL; s[len] = '\0'; |