summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2004-02-20 23:19:39 +0000
committerJeremy Allison <jra@samba.org>2004-02-20 23:19:39 +0000
commitef8f8274492c142765a94cc453d3da640c9fef91 (patch)
tree99888169ce55fdbd5564fd66468ed4f297edd371 /source3
parent7d7849b18a625820b1fba05bd17a718c7f98837e (diff)
downloadsamba-ef8f8274492c142765a94cc453d3da640c9fef91.tar.gz
samba-ef8f8274492c142765a94cc453d3da640c9fef91.tar.bz2
samba-ef8f8274492c142765a94cc453d3da640c9fef91.zip
Make SMB_FILE_ACCESS_INFORMATION call work correctly.
Jeremy. (This used to be commit 0ea0ada6c609e1bb0fb4aace24e1beb7197495b5)
Diffstat (limited to 'source3')
-rw-r--r--source3/libsmb/clirap.c2
-rw-r--r--source3/smbd/trans2.c4
-rw-r--r--source3/torture/torture.c15
3 files changed, 13 insertions, 8 deletions
diff --git a/source3/libsmb/clirap.c b/source3/libsmb/clirap.c
index c4b08d21d8..9c10e9d938 100644
--- a/source3/libsmb/clirap.c
+++ b/source3/libsmb/clirap.c
@@ -669,7 +669,7 @@ BOOL cli_qfileinfo_test(struct cli_state *cli, int fnum, int level, char **poutd
return False;
}
- memdup(poutdata, data_len);
+ *poutdata = memdup(rdata, data_len);
*poutlen = data_len;
SAFE_FREE(rdata);
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index 525b015379..605169277d 100644
--- a/source3/smbd/trans2.c
+++ b/source3/smbd/trans2.c
@@ -1841,6 +1841,7 @@ static int call_trans2qfilepathinfo(connection_struct *conn,
int len;
time_t c_time;
files_struct *fsp = NULL;
+ uint32 desired_access = 0x12019F; /* Default - GENERIC_EXECUTE mapping from Windows */
if (!params)
return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
@@ -1904,6 +1905,7 @@ static int call_trans2qfilepathinfo(connection_struct *conn,
}
pos = fsp->position_information;
delete_pending = fsp->delete_on_close;
+ desired_access = fsp->desired_access;
}
} else {
/* qpathinfo */
@@ -2152,7 +2154,7 @@ static int call_trans2qfilepathinfo(connection_struct *conn,
break;
case SMB_FILE_ACCESS_INFORMATION:
- SIVAL(pdata,0,0x12019F); /* ??? */
+ SIVAL(pdata,0,desired_access);
data_size = 4;
break;
diff --git a/source3/torture/torture.c b/source3/torture/torture.c
index d8bfe53dc3..8c4d994b40 100644
--- a/source3/torture/torture.c
+++ b/source3/torture/torture.c
@@ -2822,12 +2822,15 @@ static BOOL run_deletetest(int dummy)
goto fail;
}
-#if 0
- {
- uint32 accinfo = 0;
- cli_qfileinfo_test(cli1, fnum1, SMB_FILE_ACCESS_INFORMATION, (char *)&accinfo);
- printf("access mode = 0x%lx\n", accinfo);
- }
+#if 0 /* JRATEST */
+ {
+ uint32 *accinfo = NULL;
+ uint32 len;
+ cli_qfileinfo_test(cli1, fnum1, SMB_FILE_ACCESS_INFORMATION, (char **)&accinfo, &len);
+ if (accinfo)
+ printf("access mode = 0x%lx\n", *accinfo);
+ SAFE_FREE(accinfo);
+ }
#endif
if (!cli_close(cli1, fnum1)) {