@@ -180,6 +180,10 @@ where
180
180
{
181
181
let filesystem = ios:: open ( c"/dev/fs" , Mode :: ReadWrite ) ?;
182
182
183
+ if directory_path. len ( ) > 64 {
184
+ return Err ( ios:: Error :: Invalid ) ;
185
+ }
186
+
183
187
let mut path = [ 0u8 ; 64 ] ;
184
188
let path_len = directory_path. len ( ) ;
185
189
path[ 0 ..path_len] . copy_from_slice ( directory_path. as_bytes ( ) ) ;
@@ -234,6 +238,10 @@ pub fn set_attributes(attributes: Attributes) -> Result<(), ios::Error> {
234
238
pub fn get_attributes ( name : & str ) -> Result < Attributes , ios:: Error > {
235
239
let filesystem = ios:: open ( c"/dev/fs" , Mode :: ReadWrite ) ?;
236
240
241
+ if name. len ( ) > 64 {
242
+ return Err ( ios:: Error :: Invalid ) ;
243
+ }
244
+
237
245
let mut in_buf = [ 0u8 ; 64 ] ;
238
246
in_buf[ 0 ..name. len ( ) ] . copy_from_slice ( name. as_bytes ( ) ) ;
239
247
@@ -259,6 +267,10 @@ pub fn get_attributes(name: &str) -> Result<Attributes, ios::Error> {
259
267
pub fn delete ( name : & str ) -> Result < ( ) , ios:: Error > {
260
268
let filesystem = ios:: open ( c"/dev/fs" , Mode :: ReadWrite ) ?;
261
269
270
+ if name. len ( ) > 64 {
271
+ return Err ( ios:: Error :: Invalid ) ;
272
+ }
273
+
262
274
let mut in_buf = [ 0u8 ; 64 ] ;
263
275
in_buf[ 0 ..name. len ( ) ] . copy_from_slice ( name. as_bytes ( ) ) ;
264
276
@@ -275,6 +287,13 @@ pub fn delete(name: &str) -> Result<(), ios::Error> {
275
287
pub fn rename ( source_name : & str , destination_name : & str ) -> Result < ( ) , ios:: Error > {
276
288
let filesystem = ios:: open ( c"/dev/fs" , Mode :: ReadWrite ) ?;
277
289
290
+ if source_name. len ( ) > 64 {
291
+ return Err ( ios:: Error :: Invalid ) ;
292
+ }
293
+ if destination_name. len ( ) > 64 {
294
+ return Err ( ios:: Error :: Invalid ) ;
295
+ }
296
+
278
297
let mut in_buf = [ 0u8 ; 128 ] ;
279
298
in_buf[ 0 ..source_name. len ( ) ] . copy_from_slice ( source_name. as_bytes ( ) ) ;
280
299
in_buf[ 64 ..64 + destination_name. len ( ) ] . copy_from_slice ( destination_name. as_bytes ( ) ) ;
@@ -319,6 +338,10 @@ pub struct FileStats {
319
338
pub fn read_file_stats ( file_name : & str ) -> Result < FileStats , ios:: Error > {
320
339
let filesystem = ios:: open ( c"/dev/fs" , Mode :: ReadWrite ) ?;
321
340
341
+ if file_name. len ( ) > 64 {
342
+ return Err ( ios:: Error :: Invalid ) ;
343
+ }
344
+
322
345
let mut file_buf = [ 0u8 ; 64 ] ;
323
346
file_buf[ 0 ..file_name. len ( ) ] . copy_from_slice ( file_name. as_bytes ( ) ) ;
324
347
let file_name = CStr :: from_bytes_with_nul ( & file_buf[ 0 ..=file_name. len ( ) ] )
@@ -353,6 +376,10 @@ pub struct Usage {
353
376
pub fn get_usage ( name : & str ) -> Result < Usage , ios:: Error > {
354
377
let filesystem = ios:: open ( c"/dev/fs" , Mode :: ReadWrite ) ?;
355
378
379
+ if name. len ( ) > 64 {
380
+ return Err ( ios:: Error :: Invalid ) ;
381
+ }
382
+
356
383
let mut in_buf = [ 0u8 ; 64 ] ;
357
384
in_buf[ 0 ..name. len ( ) ] . copy_from_slice ( name. as_bytes ( ) ) ;
358
385
0 commit comments