diff options
author | Jeremy Allison <jra@samba.org> | 2004-02-20 22:45:53 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2004-02-20 22:45:53 +0000 |
commit | 7d7849b18a625820b1fba05bd17a718c7f98837e (patch) | |
tree | e59b3dc0457048c8200f16f3814a11b41f4fd7db /source3/libsmb/clirap.c | |
parent | 926419434086b8063358df7a2fe9e863fddf337f (diff) | |
download | samba-7d7849b18a625820b1fba05bd17a718c7f98837e.tar.gz samba-7d7849b18a625820b1fba05bd17a718c7f98837e.tar.xz samba-7d7849b18a625820b1fba05bd17a718c7f98837e.zip |
Make us bug-for-bug compatible with W2K3 - to get delete on close semantics
on an initial open the desired_access field *must* contain DELETE_ACCESS,
simply having it map from a GENERIC_ALL won't do. Fixes delete on close test.
Jeremy.
(This used to be commit 5c6f8b1053fd1f170fbb76640649653f8aa80f18)
Diffstat (limited to 'source3/libsmb/clirap.c')
-rw-r--r-- | source3/libsmb/clirap.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/source3/libsmb/clirap.c b/source3/libsmb/clirap.c index 36bc403e0b4..c4b08d21d81 100644 --- a/source3/libsmb/clirap.c +++ b/source3/libsmb/clirap.c @@ -631,7 +631,7 @@ BOOL cli_qfileinfo(struct cli_state *cli, int fnum, /**************************************************************************** send a qfileinfo call ****************************************************************************/ -BOOL cli_qfileinfo_test(struct cli_state *cli, int fnum, int level, char *outdata) +BOOL cli_qfileinfo_test(struct cli_state *cli, int fnum, int level, char **poutdata, uint32 *poutlen) { unsigned int data_len = 0; unsigned int param_len = 0; @@ -639,9 +639,13 @@ BOOL cli_qfileinfo_test(struct cli_state *cli, int fnum, int level, char *outdat pstring param; char *rparam=NULL, *rdata=NULL; + *poutdata = NULL; + *poutlen = 0; + /* if its a win95 server then fail this - win95 totally screws it up */ - if (cli->win95) return False; + if (cli->win95) + return False; param_len = 4; @@ -665,7 +669,8 @@ BOOL cli_qfileinfo_test(struct cli_state *cli, int fnum, int level, char *outdat return False; } - memcpy(outdata, rdata, data_len); + memdup(poutdata, data_len); + *poutlen = data_len; SAFE_FREE(rdata); SAFE_FREE(rparam); |