]> wimlib.net Git - wimlib/blobdiff - src/mount_image.c
Fixes; write --{no,}rpfix docs; enable --rpfix capture by default
[wimlib] / src / mount_image.c
index 785620197c857492f30cf83b1c63e4af15e2a178..b00a2a686c28bcb7cebb67f97f4d18d562bb8187 100644 (file)
@@ -2024,10 +2024,16 @@ wimfs_readlink(const char *path, char *buf, size_t buf_len)
                return -errno;
        if (!inode_is_symlink(inode))
                return -EINVAL;
-
-       ret = inode_readlink(inode, buf, buf_len, ctx->wim, true);
-       if (ret > 0)
+       if (buf_len == 0)
+               return -ENAMETOOLONG;
+       ret = inode_readlink(inode, buf, buf_len - 1, ctx->wim, true);
+       if (ret >= 0) {
+               wimlib_assert(ret <= buf_len - 1);
+               buf[ret] = '\0';
                ret = 0;
+       } else if (ret == -ENAMETOOLONG) {
+               buf[buf_len - 1] = '\0';
+       }
        return ret;
 }