[PATCHES][BUG 13673] smbd: Fix DELETE_ON_CLOSE behaviour on files with READ_ONLY attribute

Jeremy Allison jra at samba.org
Sat Nov 3 00:15:46 UTC 2018


On Fri, Nov 02, 2018 at 05:03:45PM -0700, Christof Schmitt wrote:
> > 
> > patch. It handles the delete-on-close of a new file *before*
> > we create the new file. Let me know if you're OK with it.
> 
> I was also getting there. The two if statements for existing files can be
> combined to reduce the indentation. Also, for new files, shouldn't we
> set fsp->initial_delete_on_close = True as well? I need that to get the
> test to pass. (see attached version).

My code already does that.

Note that the second hunk *always* sets fsp->initial_delete_on_close
if (create_options & FILE_DELETE_ON_CLOSE) whether it's a new file or
not, only the can_set_delete_on_close() is gated on !new_file_created.

After my patch the second delete on close hunk looks like:

        /* Handle strange delete on close create semantics. */
        if (create_options & FILE_DELETE_ON_CLOSE) {
                if (!new_file_created) {
                        status = can_set_delete_on_close(fsp,
                                         existing_dos_attributes);

                        if (!NT_STATUS_IS_OK(status)) {
                                /* Remember to delete the mode we just added. */
                                del_share_mode(lck, fsp);
                                TALLOC_FREE(lck);
                                fd_close(fsp);
                                return status;
                        }
                }
                /* Note that here we set the *inital* delete on close flag,
                   not the regular one. The magic gets handled in close. */
                fsp->initial_delete_on_close = True;
        }

You can also add it to the 'new file' case, but I thought that
was redundent.

Jeremy.



More information about the samba-technical mailing list