[SCM] Samba Shared Repository - branch v3-3-test updated -
release-3-2-0pre2-4566-ga92cfb4
Jeremy Allison
jra at samba.org
Mon Dec 1 21:31:48 GMT 2008
The branch, v3-3-test has been updated
via a92cfb4802fb42969a5e82d27d7ca4dcd966a5a3 (commit)
from a47e8e7438133ca3bc1f1b577ccd9d0fde8baea0 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test
- Log -----------------------------------------------------------------
commit a92cfb4802fb42969a5e82d27d7ca4dcd966a5a3
Author: Stefan Metzmacher <metze at samba.org>
Date: Mon Dec 1 13:31:28 2008 -0800
s3:smbd: construct the correct newname for stream renames
The Windows Explorer creates temporary streams and renames
them later via SFILEINFO_RENAME_INFO. The newname comes
in as ":Stream:$DATA".
metze
-----------------------------------------------------------------------
Summary of changes:
source/smbd/trans2.c | 48 ++++++++++++++++++++++++++++++++----------------
1 files changed, 32 insertions(+), 16 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/smbd/trans2.c b/source/smbd/trans2.c
index 8f48693..df0b447 100644
--- a/source/smbd/trans2.c
+++ b/source/smbd/trans2.c
@@ -5347,26 +5347,42 @@ static NTSTATUS smb_file_rename_information(connection_struct *conn,
return NT_STATUS_NOT_SUPPORTED;
}
- /* Create the base directory. */
- base_name = talloc_strdup(ctx, fname);
- if (!base_name) {
- return NT_STATUS_NO_MEMORY;
- }
- p = strrchr_m(base_name, '/');
- if (p) {
- p[1] = '\0';
+ if (fsp && fsp->base_fsp) {
+ if (newname[0] != ':') {
+ return NT_STATUS_NOT_SUPPORTED;
+ }
+ base_name = talloc_asprintf(ctx, "%s%s",
+ fsp->base_fsp->fsp_name,
+ newname);
+ if (!base_name) {
+ return NT_STATUS_NO_MEMORY;
+ }
} else {
- base_name = talloc_strdup(ctx, "./");
+ if (is_ntfs_stream_name(newname)) {
+ return NT_STATUS_NOT_SUPPORTED;
+ }
+
+ /* Create the base directory. */
+ base_name = talloc_strdup(ctx, fname);
+ if (!base_name) {
+ return NT_STATUS_NO_MEMORY;
+ }
+ p = strrchr_m(base_name, '/');
+ if (p) {
+ p[1] = '\0';
+ } else {
+ base_name = talloc_strdup(ctx, "./");
+ if (!base_name) {
+ return NT_STATUS_NO_MEMORY;
+ }
+ }
+ /* Append the new name. */
+ base_name = talloc_asprintf_append(base_name,
+ "%s",
+ newname);
if (!base_name) {
return NT_STATUS_NO_MEMORY;
}
- }
- /* Append the new name. */
- base_name = talloc_asprintf_append(base_name,
- "%s",
- newname);
- if (!base_name) {
- return NT_STATUS_NO_MEMORY;
}
if (fsp) {
--
Samba Shared Repository
More information about the samba-cvs
mailing list