vfs_glusterfs: check for VFS_ADD_FSP_EXTENSION() failure
authorDavid Disseldorp <ddiss@samba.org>
Mon, 18 Feb 2019 16:41:08 +0000 (17:41 +0100)
committerGünther Deschner <gd@samba.org>
Wed, 20 Feb 2019 11:11:20 +0000 (12:11 +0100)
Signed-off-by: David Disseldorp <ddiss@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>
source3/modules/vfs_glusterfs.c

index 601be5a2da46d6007c5b472979f6df1841d5c730..82a7c2ce9b401248fc405d04fe44cb9a000133eb 100644 (file)
@@ -592,6 +592,12 @@ static int vfs_gluster_open(struct vfs_handle_struct *handle,
        glfs_fd_t *glfd;
        glfs_fd_t **p_tmp;
 
+       p_tmp = VFS_ADD_FSP_EXTENSION(handle, fsp, glfs_fd_t *, NULL);
+       if (p_tmp == NULL) {
+               errno = ENOMEM;
+               return -1;
+       }
+
        if (flags & O_DIRECTORY) {
                glfd = glfs_opendir(handle->data, smb_fname->base_name);
        } else if (flags & O_CREAT) {
@@ -602,9 +608,11 @@ static int vfs_gluster_open(struct vfs_handle_struct *handle,
        }
 
        if (glfd == NULL) {
+               /* no extension destroy_fn, so no need to save errno */
+               VFS_REMOVE_FSP_EXTENSION(handle, fsp);
                return -1;
        }
-       p_tmp = VFS_ADD_FSP_EXTENSION(handle, fsp, glfs_fd_t *, NULL);
+
        *p_tmp = glfd;
        /* An arbitrary value for error reporting, so you know its us. */
        return 13371337;