Commit fae08645 authored by Chen Gang's avatar Chen Gang Committed by Aneesh Kumar K.V
Browse files

hw/9pfs/virtio-9p-local.c: use snprintf() instead of sprintf()



'ctx->fs_root' + 'path'/'fullname.data' may be larger than PATH_MAX, so
need use snprintf() instead of sprintf() just like another area have done
in 9pfs. This could possibly result in the truncation of pathname, which we
address in the follow up patch.

Signed-off-by: default avatarChen Gang <gang.chen.5i5j@gmail.com>
Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
parent 75b7931e
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -898,7 +898,8 @@ static int local_remove(FsContext *ctx, const char *path)
         * directory
         */
        if (S_ISDIR(stbuf.st_mode)) {
            sprintf(buffer, "%s/%s/%s", ctx->fs_root, path, VIRTFS_META_DIR);
            snprintf(buffer, ARRAY_SIZE(buffer), "%s/%s/%s",
                     ctx->fs_root, path, VIRTFS_META_DIR);
            err = remove(buffer);
            if (err < 0 && errno != ENOENT) {
                /*
@@ -1033,7 +1034,7 @@ static int local_unlinkat(FsContext *ctx, V9fsPath *dir,
             * If directory remove .virtfs_metadata contained in the
             * directory
             */
            sprintf(buffer, "%s/%s/%s", ctx->fs_root,
            snprintf(buffer, ARRAY_SIZE(buffer), "%s/%s/%s", ctx->fs_root,
                     fullname.data, VIRTFS_META_DIR);
            ret = remove(buffer);
            if (ret < 0 && errno != ENOENT) {