Commit 60287d0a authored by Alexandre Julliard's avatar Alexandre Julliard

Make sure we don't truncate the file on open before we have checked

the sharing modes (thanks to Dmitry Timoshkov for the test case).
parent 8811628c
......@@ -944,7 +944,7 @@ struct fd *open_fd( struct fd *fd, const char *name, int flags, mode_t *mode,
}
flags &= ~(O_CREAT | O_EXCL | O_TRUNC);
}
if ((fd->unix_fd = open( name, flags, *mode )) == -1)
if ((fd->unix_fd = open( name, flags & ~O_TRUNC, *mode )) == -1)
{
file_set_error();
release_object( fd );
......@@ -990,6 +990,7 @@ struct fd *open_fd( struct fd *fd, const char *name, int flags, mode_t *mode,
return NULL;
}
strcpy( closed_fd->unlink, unlink_name );
if (flags & O_TRUNC) ftruncate( fd->unix_fd, 0 );
}
else
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment