13 // Description: |
13 // Description: |
14 // f32test\server\t_misc.cpp |
14 // f32test\server\t_misc.cpp |
15 // |
15 // |
16 // |
16 // |
17 |
17 |
|
18 #define __E32TEST_EXTENSION__ |
18 #include <f32file.h> |
19 #include <f32file.h> |
19 #include <e32test.h> |
20 #include <e32test.h> |
20 #include "t_server.h" |
21 #include "t_server.h" |
|
22 |
|
23 // If there is an NFE media driver present, then because of the way EDeleteNotify requests work, |
|
24 // the data retrieved from a deleted file will not be a buffer full of zero's, but instead a buffer |
|
25 // full of decrypted zero's |
|
26 #define __NFE_MEDIA_DRIVER_PRESENT__ |
21 |
27 |
22 #ifdef __VC32__ |
28 #ifdef __VC32__ |
23 // Solve compilation problem caused by non-English locale |
29 // Solve compilation problem caused by non-English locale |
24 #pragma setlocale("english") |
30 #pragma setlocale("english") |
25 #endif |
31 #endif |
26 |
32 |
27 GLDEF_D RTest test(_L("T_MISC")); |
33 GLDEF_D RTest test(_L("T_MISC")); |
28 |
34 |
|
35 const TUint KBufLength = 0x100; |
|
36 |
29 LOCAL_C void Test1() |
37 LOCAL_C void Test1() |
30 // |
38 // |
31 // Open, write to and read from a file |
39 // Open, write to and read from a file |
32 // |
40 // |
33 { |
41 { |
34 |
42 |
35 test.Next(_L("Open, write to and read from a file")); |
43 test.Next(_L("Open, write to and read from a file")); |
36 TInt r=TheFs.SetSessionPath(gSessionPath); |
44 TInt r=TheFs.SetSessionPath(gSessionPath); |
37 test(r==KErrNone); |
45 test_KErrNone(r); |
38 RFile file; |
46 RFile file; |
39 r=file.Create(TheFs,_L("Hello.Wld"),EFileWrite); |
47 r=file.Create(TheFs,_L("Hello.Wld"),EFileWrite); |
40 test(r==KErrNone); |
48 test_KErrNone(r); |
41 r=file.Write(_L8("Hello World"),11); |
49 r=file.Write(_L8("Hello World"),11); |
42 test(r==KErrNone); |
50 test_KErrNone(r); |
43 file.Close(); |
51 file.Close(); |
44 |
52 |
45 r=file.Open(TheFs,_L("Hello.Wld"),EFileRead); |
53 r=file.Open(TheFs,_L("Hello.Wld"),EFileRead); |
46 test(r==KErrNone); |
54 test_KErrNone(r); |
47 TBuf8<256> buf; |
55 TBuf8<256> buf; |
48 r=file.Read(buf); |
56 r=file.Read(buf); |
49 test(r==KErrNone); |
57 test_KErrNone(r); |
50 test(buf==_L8("Hello World")); |
58 test(buf==_L8("Hello World")); |
51 file.Close(); |
59 file.Close(); |
52 } |
60 } |
53 |
61 |
54 LOCAL_C void Test2() |
62 LOCAL_C void Test2() |
57 // |
65 // |
58 { |
66 { |
59 |
67 |
60 test.Next(_L("Open and read from a file")); |
68 test.Next(_L("Open and read from a file")); |
61 TInt r=TheFs.SetSessionPath(gSessionPath); |
69 TInt r=TheFs.SetSessionPath(gSessionPath); |
62 test(r==KErrNone); |
70 test_KErrNone(r); |
63 RFile file; |
71 RFile file; |
64 r=file.Open(TheFs,_L("Hello.Wld"),EFileRead); |
72 r=file.Open(TheFs,_L("Hello.Wld"),EFileRead); |
65 test(r==KErrNone); |
73 test_KErrNone(r); |
66 TBuf8<256> buf; |
74 TBuf8<256> buf; |
67 r=file.Read(buf); |
75 r=file.Read(buf); |
68 test(r==KErrNone); |
76 test_KErrNone(r); |
69 test(buf==_L8("Hello World")); |
77 test(buf==_L8("Hello World")); |
70 file.Close(); |
78 file.Close(); |
71 r=TheFs.Delete(_L("HELLO.WLD")); |
79 r=TheFs.Delete(_L("HELLO.WLD")); |
72 test(r==KErrNone); |
80 test_KErrNone(r); |
73 } |
81 } |
74 |
82 |
75 LOCAL_C void Test3() |
83 LOCAL_C void Test3() |
76 // |
84 // |
77 // Create nested directories |
85 // Create nested directories |
78 // |
86 // |
79 { |
87 { |
80 |
88 |
81 test.Next(_L("Create nested directories")); |
89 test.Next(_L("Create nested directories")); |
82 TInt r=TheFs.SetSessionPath(gSessionPath); |
90 TInt r=TheFs.SetSessionPath(gSessionPath); |
83 test(r==KErrNone); |
91 test_KErrNone(r); |
84 TheFs.ResourceCountMarkStart(); |
92 TheFs.ResourceCountMarkStart(); |
85 // |
93 // |
86 r=TheFs.MkDir(_L("\\F32-TST\\LEFT\\A.B")); |
94 r=TheFs.MkDir(_L("\\F32-TST\\LEFT\\A.B")); |
87 test(r==KErrNone || r==KErrAlreadyExists); |
95 test_Value(r, r == KErrNone || r==KErrAlreadyExists); |
88 r=TheFs.MkDir(_L("\\F32-TST\\RIGHT\\")); |
96 r=TheFs.MkDir(_L("\\F32-TST\\RIGHT\\")); |
89 test(r==KErrNone || r==KErrAlreadyExists); |
97 test_Value(r, r == KErrNone || r==KErrAlreadyExists); |
90 // |
98 // |
91 r=TheFs.MkDir(_L("\\F32-TST\\LEFT\\ONE\\")); |
99 r=TheFs.MkDir(_L("\\F32-TST\\LEFT\\ONE\\")); |
92 test(r==KErrNone || r==KErrAlreadyExists); |
100 test_Value(r, r == KErrNone || r==KErrAlreadyExists); |
93 r=TheFs.MkDir(_L("\\F32-TST\\LEFT\\TWO\\")); |
101 r=TheFs.MkDir(_L("\\F32-TST\\LEFT\\TWO\\")); |
94 test(r==KErrNone || r==KErrAlreadyExists); |
102 test_Value(r, r == KErrNone || r==KErrAlreadyExists); |
95 r=TheFs.MkDir(_L("\\F32-TST\\LEFT\\THREE\\")); |
103 r=TheFs.MkDir(_L("\\F32-TST\\LEFT\\THREE\\")); |
96 test(r==KErrNone || r==KErrAlreadyExists); |
104 test_Value(r, r == KErrNone || r==KErrAlreadyExists); |
97 r=TheFs.MkDir(_L("\\F32-TST\\LEFT\\TWO\\BOTTOM\\")); |
105 r=TheFs.MkDir(_L("\\F32-TST\\LEFT\\TWO\\BOTTOM\\")); |
98 test(r==KErrNone || r==KErrAlreadyExists); |
106 test_Value(r, r == KErrNone || r==KErrAlreadyExists); |
99 // |
107 // |
100 r=TheFs.MkDirAll(_L("\\F32-TST\\RIGHT\\TOP\\MID\\BOT\\")); |
108 r=TheFs.MkDirAll(_L("\\F32-TST\\RIGHT\\TOP\\MID\\BOT\\")); |
101 test(r==KErrNone || r==KErrAlreadyExists); |
109 test_Value(r, r == KErrNone || r==KErrAlreadyExists); |
102 } |
110 } |
103 |
111 |
104 LOCAL_C void Test4() |
112 LOCAL_C void Test4() |
105 // |
113 // |
106 // Test returned error values |
114 // Test returned error values |
107 // |
115 // |
108 { |
116 { |
109 |
117 |
110 test.Next(_L("Test returned error values")); |
118 test.Next(_L("Test returned error values")); |
111 TInt r=TheFs.SetSessionPath(gSessionPath); |
119 TInt r=TheFs.SetSessionPath(gSessionPath); |
112 test(r==KErrNone); |
120 test_KErrNone(r); |
113 TheFs.ResourceCountMarkStart(); |
121 TheFs.ResourceCountMarkStart(); |
114 // |
122 // |
115 r=TheFs.MkDir(_L("\\")); |
123 r=TheFs.MkDir(_L("\\")); |
116 test(r==KErrAlreadyExists); |
124 test_Value(r, r == KErrAlreadyExists); |
117 r=TheFs.MkDir(_L("\\LEFT")); |
125 r=TheFs.MkDir(_L("\\LEFT")); |
118 test(r==KErrAlreadyExists); |
126 test_Value(r, r == KErrAlreadyExists); |
119 r=TheFs.MkDir(_L("\\F32-TST\\LEFT\\")); |
127 r=TheFs.MkDir(_L("\\F32-TST\\LEFT\\")); |
120 test(r==KErrAlreadyExists); |
128 test_Value(r, r == KErrAlreadyExists); |
121 r=TheFs.MkDir(_L("\\F32-TST\\LEFT\\..\\NEWDIR\\")); |
129 r=TheFs.MkDir(_L("\\F32-TST\\LEFT\\..\\NEWDIR\\")); |
122 test(r==KErrBadName); |
130 test_Value(r, r == KErrBadName); |
123 r=TheFs.MkDir(_L("\\F32-TST\\NEWDIR\\SUBDIR\\")); |
131 r=TheFs.MkDir(_L("\\F32-TST\\NEWDIR\\SUBDIR\\")); |
124 test(r==KErrPathNotFound); |
132 test_Value(r, r == KErrPathNotFound); |
125 // |
133 // |
126 r=TheFs.RmDir(_L("\\")); |
134 r=TheFs.RmDir(_L("\\")); |
127 test(r==KErrInUse); |
135 test_Value(r, r == KErrInUse); |
128 r=TheFs.RmDir(_L("\\PROG")); |
136 r=TheFs.RmDir(_L("\\PROG")); |
129 test(r==KErrInUse); |
137 test_Value(r, r == KErrInUse); |
130 r=TheFs.RmDir(_L("\\F32-TST\\")); |
138 r=TheFs.RmDir(_L("\\F32-TST\\")); |
131 test(r==KErrInUse); |
139 test_Value(r, r == KErrInUse); |
132 |
140 |
133 |
141 |
134 RDir dir; |
142 RDir dir; |
135 r=dir.Open(TheFs,_L("V:\\asdf"),KEntryAttNormal); |
143 r=dir.Open(TheFs,_L("V:\\asdf"),KEntryAttNormal); |
136 test(r==KErrNone || r==KErrNotReady || r==KErrNotFound); |
144 test_Value(r, r == KErrNone || r==KErrNotReady || r==KErrNotFound); |
137 if (r==KErrNone) |
145 if (r==KErrNone) |
138 dir.Close(); |
146 dir.Close(); |
139 r=dir.Open(TheFs,_L("L:\\asdf"),KEntryAttNormal); |
147 r=dir.Open(TheFs,_L("L:\\asdf"),KEntryAttNormal); |
140 test(r==KErrNone || r==KErrNotReady || r==KErrNotFound); |
148 test_Value(r, r == KErrNone || r==KErrNotReady || r==KErrNotFound); |
141 dir.Close(); |
149 dir.Close(); |
142 // |
150 // |
143 TEntry entry; |
151 TEntry entry; |
144 r=TheFs.Entry(_L("z:\\NOTEXiSTS\\file.txt"),entry); |
152 r=TheFs.Entry(_L("z:\\NOTEXiSTS\\file.txt"),entry); |
145 test(r==KErrPathNotFound); |
153 test_Value(r, r == KErrPathNotFound); |
146 r=TheFs.Entry(_L("z:\\NOTEXiSTS\\"),entry); |
154 r=TheFs.Entry(_L("z:\\NOTEXiSTS\\"),entry); |
147 test(r==KErrNotFound); |
155 test_Value(r, r == KErrNotFound); |
148 r=TheFs.Entry(_L("z:\\SYSTEM\\"),entry); |
156 r=TheFs.Entry(_L("z:\\SYSTEM\\"),entry); |
149 test(r==KErrNone); |
157 test_KErrNone(r); |
150 r=TheFs.Entry(PlatSec::ConfigSetting(PlatSec::EPlatSecEnforceSysBin)?_L("z:\\SYS\\BIN\\ESHELL.EXE"):_L("z:\\SYSTEM\\BIN\\ESHELL.EXE"),entry); |
158 r=TheFs.Entry(PlatSec::ConfigSetting(PlatSec::EPlatSecEnforceSysBin)?_L("z:\\SYS\\BIN\\ESHELL.EXE"):_L("z:\\SYSTEM\\BIN\\ESHELL.EXE"),entry); |
151 test(r==KErrNone); |
159 test_KErrNone(r); |
152 |
160 |
153 r=dir.Open(TheFs,_L("\\*"),NULL); |
161 r=dir.Open(TheFs,_L("\\*"),NULL); |
154 test(r==KErrNone); |
162 test_KErrNone(r); |
155 TEntry dirEntry; |
163 TEntry dirEntry; |
156 r=dir.Read(dirEntry); |
164 r=dir.Read(dirEntry); |
157 test(r==KErrNone || r==KErrEof); |
165 test_Value(r, r == KErrNone || r==KErrEof); |
158 if (r==KErrNone) |
166 if (r==KErrNone) |
159 test.Printf(_L("%S\n"),&dirEntry.iName); |
167 test.Printf(_L("%S\n"),&dirEntry.iName); |
160 dir.Close(); |
168 dir.Close(); |
161 |
169 |
162 r=dir.Open(TheFs,_L("A:\\*"),NULL); |
170 r=dir.Open(TheFs,_L("A:\\*"),NULL); |
163 test(r==KErrNotReady || r==KErrNone); |
171 test_Value(r, r == KErrNotReady || r==KErrNone); |
164 dir.Close(); |
172 dir.Close(); |
165 } |
173 } |
166 |
174 |
167 LOCAL_C void Test5() |
175 LOCAL_C void Test5() |
168 // |
176 // |
179 |
187 |
180 if ( TheFs.IsFileInRom(KTFileCpp) != NULL && TheFs.IsFileInRom(KTFsrvCpp) != NULL ) |
188 if ( TheFs.IsFileInRom(KTFileCpp) != NULL && TheFs.IsFileInRom(KTFsrvCpp) != NULL ) |
181 { |
189 { |
182 RFile f; |
190 RFile f; |
183 r=f.Open(TheFs,KTFileCpp,EFileRead); |
191 r=f.Open(TheFs,KTFileCpp,EFileRead); |
184 test(r==KErrNone); |
192 test_KErrNone(r); |
185 r=f.Seek(ESeekAddress,pos); |
193 r=f.Seek(ESeekAddress,pos); |
186 TText8* ptrPos=*(TText8**)&pos; |
194 TText8* ptrPos=*(TText8**)&pos; |
187 test(r==KErrNone); |
195 test_KErrNone(r); |
188 TBuf8<1024> readBuf; |
196 TBuf8<1024> readBuf; |
189 r=f.Read(readBuf); |
197 r=f.Read(readBuf); |
190 test(r==KErrNone); |
198 test_KErrNone(r); |
191 test(readBuf.Length()==readBuf.MaxLength()); |
199 test(readBuf.Length()==readBuf.MaxLength()); |
192 TPtrC8 memBuf(ptrPos,readBuf.Length()); |
200 TPtrC8 memBuf(ptrPos,readBuf.Length()); |
193 test(memBuf==readBuf); |
201 test(memBuf==readBuf); |
194 |
202 |
195 ptrPos+=9913; |
203 ptrPos+=9913; |
196 pos=9913; |
204 pos=9913; |
197 r=f.Seek(ESeekStart,pos); |
205 r=f.Seek(ESeekStart,pos); |
198 test(r==KErrNone); |
206 test_KErrNone(r); |
199 readBuf.SetLength(0); |
207 readBuf.SetLength(0); |
200 r=f.Read(readBuf); |
208 r=f.Read(readBuf); |
201 test(r==KErrNone); |
209 test_KErrNone(r); |
202 test(readBuf.Length()==readBuf.MaxLength()); |
210 test(readBuf.Length()==readBuf.MaxLength()); |
203 memBuf.Set(ptrPos,readBuf.Length()); |
211 memBuf.Set(ptrPos,readBuf.Length()); |
204 test(memBuf==readBuf); |
212 test(memBuf==readBuf); |
205 |
213 |
206 RFile f2; |
214 RFile f2; |
207 pos=10; |
215 pos=10; |
208 r=f2.Open(TheFs,KTFsrvCpp,EFileRead); |
216 r=f2.Open(TheFs,KTFsrvCpp,EFileRead); |
209 |
217 |
210 test(r==KErrNone); |
218 test_KErrNone(r); |
211 r=f2.Seek(ESeekAddress,pos); |
219 r=f2.Seek(ESeekAddress,pos); |
212 ptrPos=*(TText8**)&pos; |
220 ptrPos=*(TText8**)&pos; |
213 test(r==KErrNone); |
221 test_KErrNone(r); |
214 readBuf.SetLength(0); |
222 readBuf.SetLength(0); |
215 pos=10; |
223 pos=10; |
216 r=f2.Seek(ESeekStart,pos); |
224 r=f2.Seek(ESeekStart,pos); |
217 test(r==KErrNone); |
225 test_KErrNone(r); |
218 r=f2.Read(readBuf); |
226 r=f2.Read(readBuf); |
219 test(r==KErrNone); |
227 test_KErrNone(r); |
220 test(readBuf.Length()==readBuf.MaxLength()); |
228 test(readBuf.Length()==readBuf.MaxLength()); |
221 memBuf.Set(ptrPos,readBuf.Length()); |
229 memBuf.Set(ptrPos,readBuf.Length()); |
222 test(memBuf==readBuf); |
230 test(memBuf==readBuf); |
223 |
231 |
224 ptrPos+=2445; |
232 ptrPos+=2445; |
225 pos=10+2445; |
233 pos=10+2445; |
226 r=f2.Seek(ESeekStart,pos); |
234 r=f2.Seek(ESeekStart,pos); |
227 test(r==KErrNone); |
235 test_KErrNone(r); |
228 readBuf.SetLength(0); |
236 readBuf.SetLength(0); |
229 r=f2.Read(readBuf); |
237 r=f2.Read(readBuf); |
230 test(r==KErrNone); |
238 test_KErrNone(r); |
231 test(readBuf.Length()==readBuf.MaxLength()); |
239 test(readBuf.Length()==readBuf.MaxLength()); |
232 memBuf.Set(ptrPos,readBuf.Length()); |
240 memBuf.Set(ptrPos,readBuf.Length()); |
233 test(memBuf==readBuf); |
241 test(memBuf==readBuf); |
234 |
242 |
235 pos=0; |
243 pos=0; |
236 r=f.Seek(ESeekAddress,pos); |
244 r=f.Seek(ESeekAddress,pos); |
237 ptrPos=*(TText8**)&pos; |
245 ptrPos=*(TText8**)&pos; |
238 test(r==KErrNone); |
246 test_KErrNone(r); |
239 readBuf.SetLength(0); |
247 readBuf.SetLength(0); |
240 pos=0; |
248 pos=0; |
241 r=f.Seek(ESeekStart,pos); |
249 r=f.Seek(ESeekStart,pos); |
242 test(r==KErrNone); |
250 test_KErrNone(r); |
243 r=f.Read(readBuf); |
251 r=f.Read(readBuf); |
244 test(r==KErrNone); |
252 test_KErrNone(r); |
245 test(readBuf.Length()==readBuf.MaxLength()); |
253 test(readBuf.Length()==readBuf.MaxLength()); |
246 memBuf.Set(ptrPos,readBuf.Length()); |
254 memBuf.Set(ptrPos,readBuf.Length()); |
247 test(memBuf==readBuf); |
255 test(memBuf==readBuf); |
248 |
256 |
249 ptrPos+=5245; |
257 ptrPos+=5245; |
250 pos=5245; |
258 pos=5245; |
251 r=f.Seek(ESeekStart,pos); |
259 r=f.Seek(ESeekStart,pos); |
252 test(r==KErrNone); |
260 test_KErrNone(r); |
253 readBuf.SetLength(0); |
261 readBuf.SetLength(0); |
254 r=f.Read(readBuf); |
262 r=f.Read(readBuf); |
255 test(r==KErrNone); |
263 test_KErrNone(r); |
256 test(readBuf.Length()==readBuf.MaxLength()); |
264 test(readBuf.Length()==readBuf.MaxLength()); |
257 memBuf.Set(ptrPos,readBuf.Length()); |
265 memBuf.Set(ptrPos,readBuf.Length()); |
258 test(memBuf==readBuf); |
266 test(memBuf==readBuf); |
259 |
267 |
260 f.Close(); |
268 f.Close(); |
293 TBuf<32> file1=_L("\\TMISC\\CACHE.FILE"); |
301 TBuf<32> file1=_L("\\TMISC\\CACHE.FILE"); |
294 MakeFile(file1,uid1,contents1); |
302 MakeFile(file1,uid1,contents1); |
295 |
303 |
296 TEntry entry; |
304 TEntry entry; |
297 TInt r=TheFs.Entry(file1,entry); |
305 TInt r=TheFs.Entry(file1,entry); |
298 test(r==KErrNone); |
306 test_KErrNone(r); |
299 test(entry.iType==uid1); |
307 test(entry.iType==uid1); |
300 |
308 |
301 TUidType uid2(TUid::Uid(4),TUid::Uid(5),TUid::Uid(6)); |
309 TUidType uid2(TUid::Uid(4),TUid::Uid(5),TUid::Uid(6)); |
302 TCheckedUid checkedUid(uid2); |
310 TCheckedUid checkedUid(uid2); |
303 TPtrC8 uidData((TUint8*)&checkedUid,sizeof(TCheckedUid)); |
311 TPtrC8 uidData((TUint8*)&checkedUid,sizeof(TCheckedUid)); |
304 RFile f; |
312 RFile f; |
305 r=f.Open(TheFs,file1,EFileRead|EFileWrite); |
313 r=f.Open(TheFs,file1,EFileRead|EFileWrite); |
306 test(r==KErrNone); |
314 test_KErrNone(r); |
307 r=f.Write(uidData); |
315 r=f.Write(uidData); |
308 test(r==KErrNone); |
316 test_KErrNone(r); |
309 r = f.Flush(); |
317 r = f.Flush(); |
310 test(r==KErrNone); |
318 test_KErrNone(r); |
311 |
319 |
312 r=TheFs.Entry(file1,entry); |
320 r=TheFs.Entry(file1,entry); |
313 test(r==KErrNone); |
321 test_KErrNone(r); |
314 test(entry.iType==uid2); |
322 test(entry.iType==uid2); |
315 |
323 |
316 f.Close(); |
324 f.Close(); |
317 r=TheFs.Entry(file1,entry); |
325 r=TheFs.Entry(file1,entry); |
318 test(r==KErrNone); |
326 test_KErrNone(r); |
319 test(entry.iType==uid2); |
327 test(entry.iType==uid2); |
320 } |
328 } |
321 |
329 |
322 LOCAL_C void Test8() |
330 LOCAL_C void Test8() |
323 // |
331 // |
565 TFileName driveName; |
573 TFileName driveName; |
566 TInt i; |
574 TInt i; |
567 for(i=0;i<KMaxDrives;i++) |
575 for(i=0;i<KMaxDrives;i++) |
568 { |
576 { |
569 TInt r=TheFs.GetDriveName(i,driveName); |
577 TInt r=TheFs.GetDriveName(i,driveName); |
570 test(r==KErrNone); |
578 test_KErrNone(r); |
571 if (driveName.Length()) |
579 if (driveName.Length()) |
572 test.Printf(_L("Default name of %c: == %S\n"),'A'+i,&driveName); |
580 test.Printf(_L("Default name of %c: == %S\n"),'A'+i,&driveName); |
573 } |
581 } |
574 |
582 |
575 TBuf<64> drive0=_L("Dilbert"); |
583 TBuf<64> drive0=_L("Dilbert"); |
576 TBuf<64> drive4=_L("Dogbert"); |
584 TBuf<64> drive4=_L("Dogbert"); |
577 TBuf<64> drive17=_L("Flibble"); |
585 TBuf<64> drive17=_L("Flibble"); |
578 TBuf<64> drive25=_L("RAMDRIVE"); |
586 TBuf<64> drive25=_L("RAMDRIVE"); |
579 TInt r=TheFs.SetDriveName(0,drive0); |
587 TInt r=TheFs.SetDriveName(0,drive0); |
580 test(r==KErrNone); |
588 test_KErrNone(r); |
581 r=TheFs.SetDriveName(4,drive4); |
589 r=TheFs.SetDriveName(4,drive4); |
582 test(r==KErrNone); |
590 test_KErrNone(r); |
583 r=TheFs.SetDriveName(17,drive17); |
591 r=TheFs.SetDriveName(17,drive17); |
584 test(r==KErrNone); |
592 test_KErrNone(r); |
585 r=TheFs.SetDriveName(25,drive25); |
593 r=TheFs.SetDriveName(25,drive25); |
586 test(r==KErrNone); |
594 test_KErrNone(r); |
587 |
595 |
588 r=TheFs.GetDriveName(0,driveName); |
596 r=TheFs.GetDriveName(0,driveName); |
589 test(r==KErrNone); |
597 test_KErrNone(r); |
590 test(driveName==drive0); |
598 test(driveName==drive0); |
591 r=TheFs.GetDriveName(4,driveName); |
599 r=TheFs.GetDriveName(4,driveName); |
592 test(r==KErrNone); |
600 test_KErrNone(r); |
593 test(driveName==drive4); |
601 test(driveName==drive4); |
594 r=TheFs.GetDriveName(17,driveName); |
602 r=TheFs.GetDriveName(17,driveName); |
595 test(r==KErrNone); |
603 test_KErrNone(r); |
596 test(driveName==drive17); |
604 test(driveName==drive17); |
597 r=TheFs.GetDriveName(25,driveName); |
605 r=TheFs.GetDriveName(25,driveName); |
598 test(r==KErrNone); |
606 test_KErrNone(r); |
599 test(driveName==drive25); |
607 test(driveName==drive25); |
600 |
608 |
601 drive0=_L("askdjflsdfourewoqiuroiuaksjdvx,cvsdhwjhjhalsjhfshfkjhslj"); |
609 drive0=_L("askdjflsdfourewoqiuroiuaksjdvx,cvsdhwjhjhalsjhfshfkjhslj"); |
602 r=TheFs.SetDriveName(0,drive0); |
610 r=TheFs.SetDriveName(0,drive0); |
603 test(r==KErrNone); |
611 test_KErrNone(r); |
604 r=TheFs.GetDriveName(0,driveName); |
612 r=TheFs.GetDriveName(0,driveName); |
605 test(r==KErrNone); |
613 test_KErrNone(r); |
606 test(driveName==drive0); |
614 test(driveName==drive0); |
607 |
615 |
608 // Test with illegal characters in drive name |
616 // Test with illegal characters in drive name |
609 drive0=_L("Dil>bert"); |
617 drive0=_L("Dil>bert"); |
610 drive4=_L("Dog?bert"); |
618 drive4=_L("Dog?bert"); |
611 drive17=_L("Fli*bble"); |
619 drive17=_L("Fli*bble"); |
612 drive25=_L("RAMD//RIVE"); |
620 drive25=_L("RAMD//RIVE"); |
613 |
621 |
614 r=TheFs.SetDriveName(0,drive0); |
622 r=TheFs.SetDriveName(0,drive0); |
615 test(r==KErrBadName); |
623 test_Value(r, r == KErrBadName); |
616 r=TheFs.SetDriveName(4,drive4); |
624 r=TheFs.SetDriveName(4,drive4); |
617 test(r==KErrBadName); |
625 test_Value(r, r == KErrBadName); |
618 r=TheFs.SetDriveName(17,drive17); |
626 r=TheFs.SetDriveName(17,drive17); |
619 test(r==KErrBadName); |
627 test_Value(r, r == KErrBadName); |
620 r=TheFs.SetDriveName(25,drive25); |
628 r=TheFs.SetDriveName(25,drive25); |
621 test(r==KErrBadName); |
629 test_Value(r, r == KErrBadName); |
622 |
630 |
623 // Test that it is OK to set the name to no characters |
631 // Test that it is OK to set the name to no characters |
624 |
632 |
625 drive0=_L(""); |
633 drive0=_L(""); |
626 drive4=_L(""); |
634 drive4=_L(""); |
627 drive17=_L(""); |
635 drive17=_L(""); |
628 drive25=_L(""); |
636 drive25=_L(""); |
629 |
637 |
630 r=TheFs.SetDriveName(0,drive0); |
638 r=TheFs.SetDriveName(0,drive0); |
631 test(r==KErrNone); |
639 test_KErrNone(r); |
632 r=TheFs.SetDriveName(4,drive4); |
640 r=TheFs.SetDriveName(4,drive4); |
633 test(r==KErrNone); |
641 test_KErrNone(r); |
634 r=TheFs.SetDriveName(17,drive17); |
642 r=TheFs.SetDriveName(17,drive17); |
635 test(r==KErrNone); |
643 test_KErrNone(r); |
636 r=TheFs.SetDriveName(25,drive25); |
644 r=TheFs.SetDriveName(25,drive25); |
637 test(r==KErrNone); |
645 test_KErrNone(r); |
638 |
646 |
639 r=TheFs.GetDriveName(0,driveName); |
647 r=TheFs.GetDriveName(0,driveName); |
640 test(r==KErrNone); |
648 test_KErrNone(r); |
641 test(driveName==drive0); |
649 test(driveName==drive0); |
642 r=TheFs.GetDriveName(4,driveName); |
650 r=TheFs.GetDriveName(4,driveName); |
643 test(r==KErrNone); |
651 test_KErrNone(r); |
644 test(driveName==drive4); |
652 test(driveName==drive4); |
645 r=TheFs.GetDriveName(17,driveName); |
653 r=TheFs.GetDriveName(17,driveName); |
646 test(r==KErrNone); |
654 test_KErrNone(r); |
647 test(driveName==drive17); |
655 test(driveName==drive17); |
648 r=TheFs.GetDriveName(25,driveName); |
656 r=TheFs.GetDriveName(25,driveName); |
649 test(r==KErrNone); |
657 test_KErrNone(r); |
650 test(driveName==drive25); |
658 test(driveName==drive25); |
651 |
659 |
652 |
660 |
653 } |
661 } |
654 |
662 |
695 { |
703 { |
696 |
704 |
697 test.Next(_L("Test RFs::Volume")); |
705 test.Next(_L("Test RFs::Volume")); |
698 TVolumeInfo vol; |
706 TVolumeInfo vol; |
699 TInt r=TheFs.Volume(vol,EDriveB); |
707 TInt r=TheFs.Volume(vol,EDriveB); |
700 test(r==KErrNotReady || r==KErrNone || KErrPathNotFound); |
708 test_Value(r, r == KErrNotReady || r==KErrNone || r == KErrPathNotFound); |
701 test.Printf(_L("RFs::Volume EDriveB returned %d\n"),r); |
709 test.Printf(_L("RFs::Volume EDriveB returned %d\n"),r); |
702 |
710 |
703 r=TheFs.Volume(vol,EDriveC); |
711 r=TheFs.Volume(vol,EDriveC); |
704 test(r==KErrNotReady || r==KErrNone || KErrPathNotFound); |
712 test_Value(r, r == KErrNotReady || r==KErrNone || r == KErrPathNotFound); |
705 test.Printf(_L("RFs::Volume EDriveC returned %d\n"),r); |
713 test.Printf(_L("RFs::Volume EDriveC returned %d\n"),r); |
706 |
714 |
707 r=TheFs.Volume(vol,EDriveD); |
715 r=TheFs.Volume(vol,EDriveD); |
708 test(r==KErrNotReady || r==KErrNone || KErrPathNotFound); |
716 test_Value(r, r == KErrNotReady || r==KErrNone || r == KErrPathNotFound); |
709 test.Printf(_L("RFs::Volume EDriveD returned %d\n"),r); |
717 test.Printf(_L("RFs::Volume EDriveD returned %d\n"),r); |
710 |
718 |
711 r=TheFs.Volume(vol,EDriveE); |
719 r=TheFs.Volume(vol,EDriveE); |
712 test(r==KErrNotReady || r==KErrNone || KErrPathNotFound); |
720 test_Value(r, r == KErrNotReady || r==KErrNone || r == KErrPathNotFound); |
713 test.Printf(_L("RFs::Volume EDriveE returned %d\n"),r); |
721 test.Printf(_L("RFs::Volume EDriveE returned %d\n"),r); |
714 |
722 |
715 r=TheFs.Volume(vol,EDriveF); |
723 r=TheFs.Volume(vol,EDriveF); |
716 test(r==KErrNotReady || r==KErrNone || KErrPathNotFound); |
724 test_Value(r, r == KErrNotReady || r==KErrNone || r == KErrPathNotFound); |
717 test.Printf(_L("RFs::Volume EDriveF returned %d\n"),r); |
725 test.Printf(_L("RFs::Volume EDriveF returned %d\n"),r); |
718 } |
726 } |
719 |
727 |
720 |
728 |
721 void DoTest14(TInt aDrvNum); |
729 void DoTest14(TInt aDrvNum); |
722 TInt CreateStuffedFile(RFs& aFs, const TDesC& aFileName, TUint aFileSize); |
730 TInt CreateStuffedFile(RFs& aFs, const TDesC& aFileName, TUint aFileSize); |
723 TInt CreateEmptyFile(RFs& aFs, const TDesC& aFileName, TUint aFileSize); |
731 TInt CreateEmptyFile(RFs& aFs, const TDesC& aFileName, TUint aFileSize); |
724 TBool CheckFileContents(RFs& aFs, const TDesC& aFileName); |
732 TBool CheckFileContents(RFs& aFs, const TDesC& aFileName); |
|
733 #ifndef __NFE_MEDIA_DRIVER_PRESENT__ |
725 TBool CheckBufferContents(const TDesC8& aBuffer, TUint aPrintBaseAddr=0); |
734 TBool CheckBufferContents(const TDesC8& aBuffer, TUint aPrintBaseAddr=0); |
|
735 #endif |
726 |
736 |
727 /** |
737 /** |
728 Testing unallocated data initialization vulnerability in RFile |
738 Testing unallocated data initialization vulnerability in RFile |
729 This test is performed on RAM drives and non-removable media that supports DeleteNotify (KMediaAttDeleteNotify flag) |
739 This test is performed on RAM drives and non-removable media that supports DeleteNotify (KMediaAttDeleteNotify flag) |
730 e.g. XSR NAND |
740 e.g. XSR NAND |
824 //============================== |
834 //============================== |
825 test.Printf(_L("Testing scenario 1\n")); |
835 test.Printf(_L("Testing scenario 1\n")); |
826 |
836 |
827 //-- 1. create an empty file |
837 //-- 1. create an empty file |
828 nRes = CreateEmptyFile(TheFs, fileName, KFileSize); |
838 nRes = CreateEmptyFile(TheFs, fileName, KFileSize); |
829 test(nRes == KErrNone); |
839 test_KErrNone(nRes); |
830 |
840 |
|
841 #ifndef __NFE_MEDIA_DRIVER_PRESENT__ // can't easily check for illegitimate information if drive is encrypted |
831 //-- 1.1 check that this file doesn't contain illegitimate information. |
842 //-- 1.1 check that this file doesn't contain illegitimate information. |
832 nRes = CheckFileContents(TheFs, fileName); |
843 nRes = CheckFileContents(TheFs, fileName); |
833 test(nRes == KErrNone); |
844 test_KErrNone(nRes); |
|
845 #endif |
834 |
846 |
835 //-- 1.2 delete the empty file |
847 //-- 1.2 delete the empty file |
836 nRes = TheFs.Delete(fileName); |
848 nRes = TheFs.Delete(fileName); |
837 test(nRes == KErrNone); |
849 test_KErrNone(nRes); |
838 |
850 |
839 //============================== |
851 //============================== |
840 //== Scenario 2. |
852 //== Scenario 2. |
841 //== Create file, filling it with some pattern. |
853 //== Create file, filling it with some pattern. |
842 //== Delete this file, FreeClusterListL() will be involved. |
854 //== Delete this file, FreeClusterListL() will be involved. |
845 //============================== |
857 //============================== |
846 test.Printf(_L("Testing scenario 2\n")); |
858 test.Printf(_L("Testing scenario 2\n")); |
847 |
859 |
848 //-- 2. create file filled with some data pattern |
860 //-- 2. create file filled with some data pattern |
849 nRes = CreateStuffedFile(TheFs, fileName, KFileSize); |
861 nRes = CreateStuffedFile(TheFs, fileName, KFileSize); |
850 test(nRes == KErrNone); |
862 test_KErrNone(nRes); |
851 |
863 |
852 //-- 2.1 delete this file |
864 //-- 2.1 delete this file |
853 TheFs.Delete(fileName); |
865 TheFs.Delete(fileName); |
854 |
866 |
855 //-- 2.1 create an empty file on the place of just deleted one (hopefully) |
867 //-- 2.1 create an empty file on the place of just deleted one (hopefully) |
856 nRes = CreateEmptyFile(TheFs, fileName, KFileSize); |
868 nRes = CreateEmptyFile(TheFs, fileName, KFileSize); |
857 test(nRes == KErrNone); |
869 test_KErrNone(nRes); |
858 |
870 |
859 //-- 2.2 check that this file doesn't contain illegitimate information. |
871 //-- 2.2 check that this file doesn't contain illegitimate information. |
860 nRes = CheckFileContents(TheFs, fileName); |
872 nRes = CheckFileContents(TheFs, fileName); |
861 test(nRes == KErrNone); |
873 test_KErrNone(nRes); |
862 |
874 |
863 //-- 2.3 delete this file |
875 //-- 2.3 delete this file |
864 TheFs.Delete(fileName); |
876 TheFs.Delete(fileName); |
865 |
877 |
866 } |
878 } |
1287 TInt CheckFileContents(RFs& aFs, const TDesC& aFileName) |
1298 TInt CheckFileContents(RFs& aFs, const TDesC& aFileName) |
1288 { |
1299 { |
1289 TInt nRes = KErrNone; |
1300 TInt nRes = KErrNone; |
1290 RFile file; |
1301 RFile file; |
1291 |
1302 |
1292 const TInt KBufLength = 0x100; |
|
1293 TBuf8<KBufLength> buffer; |
1303 TBuf8<KBufLength> buffer; |
1294 buffer.SetLength(0); |
1304 buffer.SetLength(0); |
1295 |
1305 |
1296 //-- open the file |
1306 //-- open the file |
1297 nRes = file.Open(aFs, aFileName, EFileRead); |
1307 nRes = file.Open(aFs, aFileName, EFileRead); |
1298 test(nRes == KErrNone); |
1308 test_KErrNone(nRes); |
1299 |
1309 |
1300 //-- check file contents |
1310 //-- check file contents |
1301 TUint nFilePos=0; |
1311 TUint nFilePos=0; |
1302 for(;;) |
1312 for(;;) |
1303 { |
1313 { |
1304 //-- read data from the file into the buffer |
1314 //-- read data from the file into the buffer |
1305 nRes = file.Read(buffer); |
1315 nRes = file.Read(buffer); |
1306 test(nRes == KErrNone); |
1316 test_KErrNone(nRes); |
1307 |
1317 |
1308 if(buffer.Length() == 0) |
1318 if(buffer.Length() == 0) |
1309 { |
1319 { |
1310 nRes = KErrNone; //-- read all the file, no illegitimate information found |
1320 nRes = KErrNone; //-- read all the file, no illegitimate information found |
1311 break; //EOF |
1321 break; //EOF |
1312 } |
1322 } |
1313 |
1323 |
|
1324 #ifdef __NFE_MEDIA_DRIVER_PRESENT__ |
|
1325 // check the buffer doesn't contain the same pattern written to it by CreateStuffedFile() |
|
1326 TUint i; |
|
1327 for(i = 0; i < KBufLength; i++) |
|
1328 if (buffer[i] != static_cast<TUint8> (i)) |
|
1329 break; |
|
1330 if (i == KBufLength) |
|
1331 { |
|
1332 nRes = KErrCorrupt; //-- indicate that the read buffer contains illegitimate information |
|
1333 break; //-- comment this out if you need a full dump of the file |
|
1334 } |
|
1335 #else |
1314 //-- check if the buffer contains only allowed data (RAM page initialisation data, etc. e.g. 0x00, 0xff, 0x03, 0xcc) |
1336 //-- check if the buffer contains only allowed data (RAM page initialisation data, etc. e.g. 0x00, 0xff, 0x03, 0xcc) |
1315 if(!CheckBufferContents(buffer, nFilePos)) |
1337 if(!CheckBufferContents(buffer, nFilePos)) |
1316 { |
1338 { |
1317 test.Printf(_L("\nCheckFileContents failed ! The file contains illegitimate information!\n")); |
1339 test.Printf(_L("\nCheckFileContents failed ! The file contains illegitimate information!\n")); |
1318 nRes = KErrCorrupt; //-- indicate that the read buffer contains illegitimate information |
1340 nRes = KErrCorrupt; //-- indicate that the read buffer contains illegitimate information |
1319 break; //-- comment this out if you need a full dump of the file |
1341 break; //-- comment this out if you need a full dump of the file |
1320 } |
1342 } |
|
1343 #endif |
1321 |
1344 |
1322 nFilePos+=buffer.Length(); |
1345 nFilePos+=buffer.Length(); |
1323 } |
1346 } |
1324 |
1347 |
1325 file.Close(); |
1348 file.Close(); |