summaryrefslogtreecommitdiff
path: root/source3/smbd/trans2.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2007-03-01 21:01:22 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:18:19 -0500
commit81cce1332129b97a5538f35c70367858f460935c (patch)
tree0ad848b2c517174212670cbde61b0f3461d2b7c3 /source3/smbd/trans2.c
parentefd510fa185a75cad9ae2b5352f72f84113b950f (diff)
downloadsamba-81cce1332129b97a5538f35c70367858f460935c.tar.gz
samba-81cce1332129b97a5538f35c70367858f460935c.tar.bz2
samba-81cce1332129b97a5538f35c70367858f460935c.zip
r21638: Change POSIX_UNLINK to allow clients to differentiate
between unlink/rmdir calls. Jeremy. (This used to be commit f0c8488d382ada32fabe79399f64ba1c6486d009)
Diffstat (limited to 'source3/smbd/trans2.c')
-rw-r--r--source3/smbd/trans2.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index 5bbd618231..2952c9b1dc 100644
--- a/source3/smbd/trans2.c
+++ b/source3/smbd/trans2.c
@@ -5132,12 +5132,24 @@ static NTSTATUS smb_posix_unlink(connection_struct *conn,
{
NTSTATUS status = NT_STATUS_OK;
files_struct *fsp = NULL;
+ uint16 flags = 0;
int info = 0;
+ if (total_data < 2) {
+ return NT_STATUS_INVALID_PARAMETER;
+ }
+
+ flags = SVAL(pdata,0);
+
if (!VALID_STAT(*psbuf)) {
return NT_STATUS_OBJECT_NAME_NOT_FOUND;
}
+ if ((flags == SMB_POSIX_UNLINK_DIRECTORY_TARGET) &&
+ !VALID_STAT_OF_DIR(*psbuf)) {
+ return NT_STATUS_NOT_A_DIRECTORY;
+ }
+
if (VALID_STAT_OF_DIR(*psbuf)) {
status = open_directory(conn,
fname,