Commit 21328e1e authored by Greg Kurz's avatar Greg Kurz
Browse files

9pfs: remove side-effects in local_open() and local_opendir()



If these functions fail, they should not change *fs. Let's use local
variables to fix this.

Signed-off-by: default avatarGreg Kurz <groug@kaod.org>
Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
parent 00c90bd1
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -356,10 +356,15 @@ static int local_open(FsContext *ctx, V9fsPath *fs_path,
{
    char *buffer;
    char *path = fs_path->data;
    int fd;

    buffer = rpath(ctx, path);
    fs->fd = open(buffer, flags | O_NOFOLLOW);
    fd = open(buffer, flags | O_NOFOLLOW);
    g_free(buffer);
    if (fd == -1) {
        return -1;
    }
    fs->fd = fd;
    return fs->fd;
}

@@ -368,13 +373,15 @@ static int local_opendir(FsContext *ctx,
{
    char *buffer;
    char *path = fs_path->data;
    DIR *stream;

    buffer = rpath(ctx, path);
    fs->dir.stream = opendir(buffer);
    stream = opendir(buffer);
    g_free(buffer);
    if (!fs->dir.stream) {
    if (!stream) {
        return -1;
    }
    fs->dir.stream = stream;
    return 0;
}