diff options
author | Jeremy Allison <jra@samba.org> | 2010-01-12 16:50:40 -0800 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2010-01-12 16:50:40 -0800 |
commit | ce8dcbe91ba0252140a0e4f84ea4bc746259ddde (patch) | |
tree | 60ae3e906cdb810ee44bf1c2911f66235b397b64 | |
parent | 47c1d9b39f292772e8d8f7a737ddff6c8bdfdeae (diff) | |
download | samba-ce8dcbe91ba0252140a0e4f84ea4bc746259ddde.tar.gz samba-ce8dcbe91ba0252140a0e4f84ea4bc746259ddde.tar.bz2 samba-ce8dcbe91ba0252140a0e4f84ea4bc746259ddde.zip |
Fix bug #7033 - SMBrmdir call always returns true, even on failure to delete a directory.
There is a codepath missing to propagate back error returns from the rmdir
POSIX call inside close_directory when delete on close is set. This means doing
an rmdir on a Windows command line will always report success, even when the
directory was not deleted. This fix adds that codepath back into Samba.
Jeremy.
-rw-r--r-- | source3/smbd/reply.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index b2d98bfbc0..b6316aac46 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -5368,8 +5368,12 @@ void reply_rmdir(struct smb_request *req) goto out; } - close_file(req, fsp, NORMAL_CLOSE); - reply_outbuf(req, 0, 0); + status = close_file(req, fsp, NORMAL_CLOSE); + if (!NT_STATUS_IS_OK(status)) { + reply_nterror(req, status); + } else { + reply_outbuf(req, 0, 0); + } dptr_closepath(sconn, smb_dname->base_name, req->smbpid); |