Fix memory handling in torture/cmd_vfs.c:cmd_open and don't leak fsp_name.
authorMichael Adam <obnox@samba.org>
Wed, 9 Jan 2008 10:22:29 +0000 (11:22 +0100)
committerMichael Adam <obnox@samba.org>
Wed, 9 Jan 2008 10:25:43 +0000 (11:25 +0100)
Michael
(This used to be commit f93fc818143a7442a6e8a90f16f60c536a5b8f9e)

source3/torture/cmd_vfs.c

index fbf9c3c9e383562931fc26bfd423c038e24fb550..e349df60616c4d4db39d820fdcee29cec4d14058 100644 (file)
@@ -279,14 +279,27 @@ static NTSTATUS cmd_open(struct vfs_state *vfs, TALLOC_CTX *mem_ctx, int argc, c
        }
 
        fsp = SMB_MALLOC_P(struct files_struct);
+       if (fsp == NULL) {
+               return NT_STATUS_NO_MEMORY;
+       }
        fsp->fsp_name = SMB_STRDUP(argv[1]);
+       if (fsp->fsp_name == NULL) {
+               SAFE_FREE(fsp);
+               return NT_STATUS_NO_MEMORY;
+       }
        fsp->fh = SMB_MALLOC_P(struct fd_handle);
+       if (fsp->fh == NULL) {
+               SAFE_FREE(fsp->fsp_name);
+               SAFE_FREE(fsp);
+               return NT_STATUS_NO_MEMORY;
+       }
        fsp->conn = vfs->conn;
 
        fsp->fh->fd = SMB_VFS_OPEN(vfs->conn, argv[1], fsp, flags, mode);
        if (fsp->fh->fd == -1) {
                printf("open: error=%d (%s)\n", errno, strerror(errno));
                SAFE_FREE(fsp->fh);
+               SAFE_FREE(fsp->fsp_name);
                SAFE_FREE(fsp);
                return NT_STATUS_UNSUCCESSFUL;
        }