#include "torture/smb2/proto.h"
#include "torture/util.h"
-#define SMB_FILE_DIRECTORY_INFORMATION 1001
-#define SMB_FILE_FULL_DIRECTORY_INFORMATION 1002
-#define SMB_FILE_BOTH_DIRECTORY_INFORMATION 1003
-#define SMB_FILE_BASIC_INFORMATION 1004
-#define SMB_FILE_STANDARD_INFORMATION 1005
-#define SMB_FILE_INTERNAL_INFORMATION 1006
-#define SMB_FILE_EA_INFORMATION 1007
-#define SMB_FILE_ACCESS_INFORMATION 1008
-#define SMB_FILE_NAME_INFORMATION 1009
-#define SMB_FILE_RENAME_INFORMATION 1010
-#define SMB2_FILE_RENAME_INFORMATION_INTERNAL 0xFF0A /* Internal mapped version. */
-#define SMB_FILE_LINK_INFORMATION 1011
-#define SMB_FILE_NAMES_INFORMATION 1012
-#define SMB_FILE_DISPOSITION_INFORMATION 1013
-#define SMB_FILE_POSITION_INFORMATION 1014
-#define SMB_FILE_FULL_EA_INFORMATION 1015
-#define SMB_FILE_MODE_INFORMATION 1016
-#define SMB_FILE_ALIGNMENT_INFORMATION 1017
-#define SMB_FILE_ALL_INFORMATION 1018
-#define SMB_FILE_ALLOCATION_INFORMATION 1019
-#define SMB_FILE_END_OF_FILE_INFORMATION 1020
-#define SMB_FILE_ALTERNATE_NAME_INFORMATION 1021
-#define SMB_FILE_STREAM_INFORMATION 1022
-#define SMB_FILE_PIPE_INFORMATION 1023
-#define SMB_FILE_PIPE_LOCAL_INFORMATION 1024
-#define SMB_FILE_PIPE_REMOTE_INFORMATION 1025
-#define SMB_FILE_MAILSLOT_QUERY_INFORMATION 1026
-#define SMB_FILE_MAILSLOT_SET_INFORMATION 1027
-#define SMB_FILE_COMPRESSION_INFORMATION 1028
-#define SMB_FILE_OBJECTID_INFORMATION 1029
-#define SMB_FILE_COMPLETION_INFORMATION 1030
-#define SMB_FILE_MOVE_CLUSTER_INFORMATION 1031
-#define SMB_FILE_QUOTA_INFORMATION 1032
-#define SMB_FILE_REPARSEPOINT_INFORMATION 1033
-#define SMB_FILE_NETWORK_OPEN_INFORMATION 1034
-#define SMB_FILE_ATTRIBUTE_TAG_INFORMATION 1035
-#define SMB_FILE_TRACKING_INFORMATION 1036
-#define SMB_FILE_ID_BOTH_DIRECTORY_INFORMATION 1037
-#define SMB_FILE_ID_FULL_DIRECTORY_INFORMATION 1038
-#define SMB_FILE_VALID_DATA_LENGTH_INFORMATION 1039
-#define SMB_FILE_SHORT_NAME_INFORMATION 1040
-#define SMB_FILE_SFIO_RESERVE_INFORMATION 1044
-#define SMB_FILE_SFIO_VOLUME_INFORMATION 1045
-#define SMB_FILE_HARD_LINK_INFORMATION 1046
-#define SMB_FILE_NORMALIZED_NAME_INFORMATION 1048
-#define SMB_FILE_ID_GLOBAL_TX_DIRECTORY_INFORMATION 1050
-#define SMB_FILE_STANDARD_LINK_INFORMATION 1054
-#define SMB_FILE_MAXIMUM_INFORMATION 1055
static struct {
const char *name;
uint16_t level;
union smb_fileinfo dinfo;
} file_levels[] = {
#define LEVEL(x) .name = #x, .level = x
- { LEVEL(SMB_FILE_DIRECTORY_INFORMATION) },
- { LEVEL(SMB_FILE_FULL_DIRECTORY_INFORMATION) },
- { LEVEL(SMB_FILE_BOTH_DIRECTORY_INFORMATION) },
- { LEVEL(SMB_FILE_BASIC_INFORMATION) },
- { LEVEL(SMB_FILE_STANDARD_INFORMATION) },
- { LEVEL(SMB_FILE_INTERNAL_INFORMATION) },
- { LEVEL(SMB_FILE_EA_INFORMATION) },
- { LEVEL(SMB_FILE_ACCESS_INFORMATION) },
- { LEVEL(SMB_FILE_NAME_INFORMATION) },
- { LEVEL(SMB_FILE_RENAME_INFORMATION) },
- { LEVEL(SMB_FILE_LINK_INFORMATION) },
- { LEVEL(SMB_FILE_NAMES_INFORMATION) },
- { LEVEL(SMB_FILE_DISPOSITION_INFORMATION) },
- { LEVEL(SMB_FILE_POSITION_INFORMATION) },
- { LEVEL(SMB_FILE_FULL_EA_INFORMATION) },
- { LEVEL(SMB_FILE_MODE_INFORMATION) },
- { LEVEL(SMB_FILE_ALIGNMENT_INFORMATION) },
- { LEVEL(SMB_FILE_ALL_INFORMATION) },
- { LEVEL(SMB_FILE_ALLOCATION_INFORMATION) },
- { LEVEL(SMB_FILE_END_OF_FILE_INFORMATION) },
- { LEVEL(SMB_FILE_ALTERNATE_NAME_INFORMATION) },
- { LEVEL(SMB_FILE_STREAM_INFORMATION) },
- { LEVEL(SMB_FILE_PIPE_INFORMATION) },
- { LEVEL(SMB_FILE_PIPE_LOCAL_INFORMATION) },
- { LEVEL(SMB_FILE_PIPE_REMOTE_INFORMATION) },
- { LEVEL(SMB_FILE_MAILSLOT_QUERY_INFORMATION) },
- { LEVEL(SMB_FILE_MAILSLOT_SET_INFORMATION) },
- { LEVEL(SMB_FILE_COMPRESSION_INFORMATION) },
- { LEVEL(SMB_FILE_OBJECTID_INFORMATION) },
- { LEVEL(SMB_FILE_COMPLETION_INFORMATION) },
- { LEVEL(SMB_FILE_MOVE_CLUSTER_INFORMATION) },
- { LEVEL(SMB_FILE_QUOTA_INFORMATION) },
- { LEVEL(SMB_FILE_REPARSEPOINT_INFORMATION) },
- { LEVEL(SMB_FILE_NETWORK_OPEN_INFORMATION) },
- { LEVEL(SMB_FILE_ATTRIBUTE_TAG_INFORMATION) },
- { LEVEL(SMB_FILE_TRACKING_INFORMATION) },
- { LEVEL(SMB_FILE_ID_BOTH_DIRECTORY_INFORMATION) },
- { LEVEL(SMB_FILE_ID_FULL_DIRECTORY_INFORMATION) },
- { LEVEL(SMB_FILE_VALID_DATA_LENGTH_INFORMATION) },
- { LEVEL(SMB_FILE_SHORT_NAME_INFORMATION) },
- { LEVEL(SMB_FILE_SFIO_RESERVE_INFORMATION) },
- { LEVEL(SMB_FILE_SFIO_VOLUME_INFORMATION) },
- { LEVEL(SMB_FILE_HARD_LINK_INFORMATION) },
- { LEVEL(SMB_FILE_NORMALIZED_NAME_INFORMATION) },
- { LEVEL(SMB_FILE_ID_GLOBAL_TX_DIRECTORY_INFORMATION) },
- { LEVEL(SMB_FILE_STANDARD_LINK_INFORMATION) },
-
{ LEVEL(RAW_FILEINFO_BASIC_INFORMATION) },
{ LEVEL(RAW_FILEINFO_STANDARD_INFORMATION) },
{ LEVEL(RAW_FILEINFO_INTERNAL_INFORMATION) },
file_levels[i].finfo.generic.level = file_levels[i].level;
file_levels[i].finfo.generic.in.file.handle = hfile;
file_levels[i].fstatus = smb2_getinfo_file(tree, tree, &file_levels[i].finfo);
- torture_comment(tctx, "Testing file info %s - %s\n",
- file_levels[i].name,
- nt_errstr(file_levels[i].fstatus));
- if (0) torture_assert_ntstatus_ok(tctx, file_levels[i].fstatus,
+ torture_assert_ntstatus_ok(tctx, file_levels[i].fstatus,
talloc_asprintf(tctx, "%s on file",
file_levels[i].name));
file_levels[i].dinfo.generic.level = file_levels[i].level;
file_levels[i].dinfo.generic.in.file.handle = hdir;
file_levels[i].dstatus = smb2_getinfo_file(tree, tree, &file_levels[i].dinfo);
- torture_comment(tctx, "Testing dir info %s - %s\n",
- file_levels[i].name,
- nt_errstr(file_levels[i].dstatus));
- if (0) torture_assert_ntstatus_ok(tctx, file_levels[i].dstatus,
+ torture_assert_ntstatus_ok(tctx, file_levels[i].dstatus,
talloc_asprintf(tctx, "%s on dir",
file_levels[i].name));
}
.level = RAW_FILEINFO_NORMALIZED_NAME_INFORMATION,
},
};
- union smb_fileinfo sinfo = {
- .stream_info = {
- .level = RAW_FILEINFO_STREAM_INFORMATION,
- },
- };
NTSTATUS status;
enum protocol_types protocol;
struct smb2_tree *tree_3_0 = NULL;
status = torture_smb2_open(tree, f4sd, SEC_RIGHTS_FILE_ALL, &hf4sd);
torture_assert_ntstatus_ok(tctx, status, "Unable to open hf4sd");
- sinfo.stream_info.in.file.handle = hd3;
- ZERO_STRUCT(sinfo.stream_info.out);
- status = smb2_getinfo_file(tree, tree, &sinfo);
- torture_assert_ntstatus_ok(tctx, status, "getinfo stream hd3");
-
info.normalized_name_info.in.file.handle = hd1;
ZERO_STRUCT(info.normalized_name_info.out);
status = smb2_getinfo_file(tree, tree, &info);
int i;
struct level_buffersize levels[] = {
- //{ 4, 40 },
- //{ 5, 24 },
- //{ 6, 8 },
- //{ 7, 4 },
- //{ 8, 4 },
- ////{ 9, 8 },
- //{ 16, 4 },
- //{ 17, 4 },
+ { 4, 40 },
+ { 5, 24 },
+ { 6, 8 },
+ { 7, 4 },
+ { 8, 4 },
+ { 16, 4 },
+ { 17, 4 },
{ 18, 104 },
{ 21, 8 },
- //{ 22, 32 },
- //{ 28, 16 },
- //{ 34, 56 },
- //{ 35, 8 },
- { 48, 8 },
+ { 22, 32 },
+ { 28, 16 },
+ { 34, 56 },
+ { 35, 8 },
};
torture_comment(tctx, "Testing SMB2_GETINFO_FILE buffer sizes\n");