summaryrefslogtreecommitdiff
path: root/source4/libcli
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2019-04-25 12:12:34 +0200
committerJeremy Allison <jra@samba.org>2019-05-01 17:22:26 +0000
commit0c602319194bda6b2a0efdd7c186078583f79264 (patch)
treed8fd6cd68bd11c5c339fabe0dc24908e2acaf6f4 /source4/libcli
parent2a69c0915586fb9fb2148239965d06bf9f93c803 (diff)
downloadsamba-0c602319194bda6b2a0efdd7c186078583f79264.tar.gz
s4:libcli/raw: add RAW_FILEINFO_NORMALIZED_NAME_INFORMATION support
This is supported over the wire in SMB 3.1.1 on starting with Windows 10 1803. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13919 Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'source4/libcli')
-rw-r--r--source4/libcli/raw/interfaces.h16
-rw-r--r--source4/libcli/raw/rawfileinfo.c11
-rw-r--r--source4/libcli/raw/trans2.h1
3 files changed, 16 insertions, 12 deletions
diff --git a/source4/libcli/raw/interfaces.h b/source4/libcli/raw/interfaces.h
index 19b29197e16..2a344f71148 100644
--- a/source4/libcli/raw/interfaces.h
+++ b/source4/libcli/raw/interfaces.h
@@ -461,6 +461,7 @@ enum smb_fileinfo_level {
RAW_FILEINFO_COMPRESSION_INFORMATION = SMB_QFILEINFO_COMPRESSION_INFORMATION,
RAW_FILEINFO_NETWORK_OPEN_INFORMATION = SMB_QFILEINFO_NETWORK_OPEN_INFORMATION,
RAW_FILEINFO_ATTRIBUTE_TAG_INFORMATION = SMB_QFILEINFO_ATTRIBUTE_TAG_INFORMATION,
+ RAW_FILEINFO_NORMALIZED_NAME_INFORMATION= SMB_QFILEINFO_NORMALIZED_NAME_INFORMATION,
/* SMB2 specific levels */
RAW_FILEINFO_SMB2_ALL_EAS = 0x0f01,
RAW_FILEINFO_SMB2_ALL_INFORMATION = 0x1201
@@ -643,6 +644,8 @@ union smb_fileinfo {
} ea_info;
/* RAW_FILEINFO_NAME_INFO and RAW_FILEINFO_NAME_INFORMATION interfaces */
+ /* RAW_FILEINFO_ALT_NAME_INFO and RAW_FILEINFO_ALT_NAME_INFORMATION interfaces */
+ /* RAW_FILEINFO_NORMALIZED_NAME_INFORMATION interface */
struct {
enum smb_fileinfo_level level;
struct {
@@ -651,7 +654,7 @@ union smb_fileinfo {
struct {
struct smb_wire_string fname;
} out;
- } name_info;
+ } name_info, alt_name_info, normalized_name_info;
/* RAW_FILEINFO_ALL_INFO and RAW_FILEINFO_ALL_INFORMATION interfaces */
struct {
@@ -704,17 +707,6 @@ union smb_fileinfo {
} out;
} all_info2;
- /* RAW_FILEINFO_ALT_NAME_INFO and RAW_FILEINFO_ALT_NAME_INFORMATION interfaces */
- struct {
- enum smb_fileinfo_level level;
- struct {
- union smb_handle_or_path file;
- } in;
- struct {
- struct smb_wire_string fname;
- } out;
- } alt_name_info;
-
/* RAW_FILEINFO_STREAM_INFO and RAW_FILEINFO_STREAM_INFORMATION interfaces */
struct {
enum smb_fileinfo_level level;
diff --git a/source4/libcli/raw/rawfileinfo.c b/source4/libcli/raw/rawfileinfo.c
index 50a6731ba41..a2599085ab7 100644
--- a/source4/libcli/raw/rawfileinfo.c
+++ b/source4/libcli/raw/rawfileinfo.c
@@ -219,6 +219,13 @@ NTSTATUS smb_raw_fileinfo_passthru_parse(const DATA_BLOB *blob, TALLOC_CTX *mem_
parms->attribute_tag_information.out.reparse_tag = IVAL(blob->data, 4);
return NT_STATUS_OK;
+ case RAW_FILEINFO_NORMALIZED_NAME_INFORMATION:
+ FINFO_CHECK_MIN_SIZE(4);
+ smbcli_blob_pull_string(NULL, mem_ctx, blob,
+ &parms->normalized_name_info.out.fname,
+ 0, 4, STR_UNICODE);
+ return NT_STATUS_OK;
+
case RAW_FILEINFO_SMB2_ALL_EAS:
FINFO_CHECK_MIN_SIZE(4);
return ea_pull_list_chained(blob, mem_ctx,
@@ -443,6 +450,10 @@ static NTSTATUS smb_raw_info_backend(struct smbcli_session *session,
return smb_raw_fileinfo_passthru_parse(blob, mem_ctx,
RAW_FILEINFO_ATTRIBUTE_TAG_INFORMATION, parms);
+ case RAW_FILEINFO_NORMALIZED_NAME_INFORMATION:
+ return smb_raw_fileinfo_passthru_parse(blob, mem_ctx,
+ RAW_FILEINFO_NORMALIZED_NAME_INFORMATION, parms);
+
case RAW_FILEINFO_SMB2_ALL_INFORMATION:
return smb_raw_fileinfo_passthru_parse(blob, mem_ctx,
RAW_FILEINFO_SMB2_ALL_INFORMATION, parms);
diff --git a/source4/libcli/raw/trans2.h b/source4/libcli/raw/trans2.h
index b7cfc6d0e8b..f93b1f1d35b 100644
--- a/source4/libcli/raw/trans2.h
+++ b/source4/libcli/raw/trans2.h
@@ -139,6 +139,7 @@ Found 8 aliased levels
#define SMB_QFILEINFO_COMPRESSION_INFORMATION 1028
#define SMB_QFILEINFO_NETWORK_OPEN_INFORMATION 1034
#define SMB_QFILEINFO_ATTRIBUTE_TAG_INFORMATION 1035
+#define SMB_QFILEINFO_NORMALIZED_NAME_INFORMATION 1048