summaryrefslogtreecommitdiff
path: root/source4/torture/smb2/setinfo.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-11-19 05:55:08 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:46:29 -0500
commit7d6f36682eab29cb23c40dd915acad61fb5d68cb (patch)
tree010c93a8e05e068af92ea1673bff3ea890a59556 /source4/torture/smb2/setinfo.c
parent931b1974a27b929b5b40d65d986f6381a0bc0daa (diff)
downloadsamba-7d6f36682eab29cb23c40dd915acad61fb5d68cb.tar.gz
samba-7d6f36682eab29cb23c40dd915acad61fb5d68cb.tar.bz2
samba-7d6f36682eab29cb23c40dd915acad61fb5d68cb.zip
r11800: - filled in unknown fields in SMB2 all_info level
- allow setting of the ALL_EAS flags bits in SMB2 getinfo (This used to be commit 8c7c54a46dfb91c053d07a5e606892a41213c605)
Diffstat (limited to 'source4/torture/smb2/setinfo.c')
-rw-r--r--source4/torture/smb2/setinfo.c33
1 files changed, 22 insertions, 11 deletions
diff --git a/source4/torture/smb2/setinfo.c b/source4/torture/smb2/setinfo.c
index 5d0055a1bb..72a75db57e 100644
--- a/source4/torture/smb2/setinfo.c
+++ b/source4/torture/smb2/setinfo.c
@@ -37,7 +37,7 @@ BOOL torture_smb2_setinfo(void)
struct smb2_handle handle;
char *fname;
char *fname_new;
- union smb_fileinfo finfo1, finfo2;
+ union smb_fileinfo finfo2;
union smb_setfileinfo sfinfo;
NTSTATUS status, status2;
const char *call_name;
@@ -77,13 +77,7 @@ BOOL torture_smb2_setinfo(void)
nt_errstr(status), nt_errstr(rightstatus)); \
ret = False; \
} \
- finfo1.generic.level = RAW_FILEINFO_SMB2_ALL_INFORMATION; \
- finfo1.generic.in.handle = handle; \
- status2 = smb2_getinfo_file(tree, mem_ctx, &finfo1); \
- if (!NT_STATUS_IS_OK(status2)) { \
- printf("(%s) %s pathinfo - %s\n", __location__, #call, nt_errstr(status)); \
- ret = False; \
- }} while (0)
+ } while (0)
#define CHECK1(call) \
do { if (NT_STATUS_IS_OK(status)) { \
@@ -101,7 +95,7 @@ BOOL torture_smb2_setinfo(void)
printf("(%s) %s - %s/%s should be 0x%x - 0x%x\n", __location__, \
call_name, #stype, #field, \
(uint_t)value, (uint_t)finfo2.stype.out.field); \
- dump_all_info(mem_ctx, &finfo1); \
+ torture_smb2_all_info(tree, handle); \
}} while (0)
#define CHECK_TIME(call, stype, field, value) do { \
@@ -113,7 +107,7 @@ BOOL torture_smb2_setinfo(void)
(uint_t)nt_time_to_unix(finfo2.stype.out.field)); \
printf("\t%s", timestring(mem_ctx, value)); \
printf("\t%s\n", nt_time_string(mem_ctx, finfo2.stype.out.field)); \
- dump_all_info(mem_ctx, &finfo1); \
+ torture_smb2_all_info(tree, handle); \
}} while (0)
#define CHECK_STR(call, stype, field, value) do { \
@@ -123,7 +117,7 @@ BOOL torture_smb2_setinfo(void)
call_name, #stype, #field, \
value, \
finfo2.stype.out.field); \
- dump_all_info(mem_ctx, &finfo1); \
+ torture_smb2_all_info(tree, handle); \
}} while (0)
#define CHECK_STATUS(status, correct) do { \
@@ -164,6 +158,21 @@ BOOL torture_smb2_setinfo(void)
CHECK_TIME(SMB2_ALL_INFORMATION, all_info2, change_time, basetime + 400);
CHECK_VALUE(SMB2_ALL_INFORMATION, all_info2, attrib, FILE_ATTRIBUTE_NORMAL);
+ printf("change the attribute\n");
+ sfinfo.basic_info.in.attrib = FILE_ATTRIBUTE_HIDDEN;
+ CHECK_CALL(BASIC_INFORMATION, NT_STATUS_OK);
+ CHECK_VALUE(SMB2_ALL_INFORMATION, all_info2, attrib, FILE_ATTRIBUTE_HIDDEN);
+
+ printf("zero attrib means don't change\n");
+ sfinfo.basic_info.in.attrib = 0;
+ CHECK_CALL(BASIC_INFORMATION, NT_STATUS_OK);
+ CHECK_VALUE(SMB2_ALL_INFORMATION, all_info2, attrib, FILE_ATTRIBUTE_HIDDEN);
+
+ printf("restore attribute\n");
+ sfinfo.basic_info.in.attrib = FILE_ATTRIBUTE_NORMAL;
+ CHECK_CALL(BASIC_INFORMATION, NT_STATUS_OK);
+ CHECK_VALUE(SMB2_ALL_INFORMATION, all_info2, attrib, FILE_ATTRIBUTE_NORMAL);
+
printf("test disposition_information level\n");
sfinfo.disposition_info.in.delete_on_close = 1;
CHECK_CALL(DISPOSITION_INFORMATION, NT_STATUS_OK);
@@ -199,11 +208,13 @@ BOOL torture_smb2_setinfo(void)
sfinfo.position_information.in.position = 123456;
CHECK_CALL(POSITION_INFORMATION, NT_STATUS_OK);
CHECK_VALUE(POSITION_INFORMATION, position_information, position, 123456);
+ CHECK_VALUE(SMB2_ALL_INFORMATION, all_info2, position, 123456);
printf("test mode_information level\n");
sfinfo.mode_information.in.mode = 2;
CHECK_CALL(MODE_INFORMATION, NT_STATUS_OK);
CHECK_VALUE(MODE_INFORMATION, mode_information, mode, 2);
+ CHECK_VALUE(SMB2_ALL_INFORMATION, all_info2, mode, 2);
sfinfo.mode_information.in.mode = 1;
CHECK_CALL(MODE_INFORMATION, NT_STATUS_INVALID_PARAMETER);