diff options
author | Stefan Metzmacher <metze@samba.org> | 2019-04-25 12:12:34 +0200 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2019-05-01 17:22:26 +0000 |
commit | 0c602319194bda6b2a0efdd7c186078583f79264 (patch) | |
tree | d8fd6cd68bd11c5c339fabe0dc24908e2acaf6f4 /source4/libcli | |
parent | 2a69c0915586fb9fb2148239965d06bf9f93c803 (diff) | |
download | samba-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.h | 16 | ||||
-rw-r--r-- | source4/libcli/raw/rawfileinfo.c | 11 | ||||
-rw-r--r-- | source4/libcli/raw/trans2.h | 1 |
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 |