chiark / gitweb /
more readlink buffer size handling
[elogind.git] / udev / udev-node.c
index 34de268464e5234cf21f5173392c45e2b57b2add..5c1b04b86c88bb150899c8c8e46d121379538c04 100644 (file)
@@ -164,7 +164,7 @@ static int node_symlink(struct udev *udev, const char *node, const char *slink)
 
                        dbg(udev, "found existing symlink '%s'\n", slink);
                        len = readlink(slink, buf, sizeof(buf));
-                       if (len > 0) {
+                       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",
@@ -323,7 +323,7 @@ static void link_update(struct udev_device *dev, const char *slink, bool add)
                        err = util_create_path(udev, filename);
                        if (err != 0 && err != -ENOENT)
                                break;
-                       fd = open(filename, O_WRONLY|O_CREAT, 0444);
+                       fd = open(filename, O_WRONLY|O_CREAT|O_NOFOLLOW, 0444);
                        if (fd >= 0)
                                close(fd);
                        else