@@ -100,22 +100,16 @@ impl ObjectInterface for RomFileInterface {
100100 let data_len = guard. data . len ( ) as isize ;
101101
102102 let new_pos = match whence {
103- SeekWhence :: Set => {
104- if offset < 0 {
105- return Err ( Errno :: Inval ) ;
106- }
107-
108- offset
109- }
103+ SeekWhence :: Set => offset,
110104 SeekWhence :: Cur => ( * pos_guard as isize )
111105 . checked_add ( offset)
112106 . ok_or ( Errno :: Overflow ) ?,
113107 SeekWhence :: End => data_len. checked_add ( offset) . ok_or ( Errno :: Overflow ) ?,
114108 _ => return Err ( Errno :: Inval ) ,
115109 } ;
116110
117- if new_pos <= data_len {
118- * pos_guard = new_pos. try_into ( ) . unwrap ( ) ;
111+ if ( 0 ..= data_len) . contains ( & new_pos ) {
112+ * pos_guard = new_pos as usize ;
119113 Ok ( new_pos)
120114 } else {
121115 Err ( Errno :: Inval )
@@ -237,25 +231,23 @@ impl ObjectInterface for RamFileInterface {
237231 let data_len = guard. data . len ( ) as isize ;
238232
239233 let new_pos = match whence {
240- SeekWhence :: Set => {
241- if offset < 0 {
242- return Err ( Errno :: Inval ) ;
243- }
244-
245- offset
246- }
234+ SeekWhence :: Set => offset,
247235 SeekWhence :: Cur => ( * pos_guard as isize )
248236 . checked_add ( offset)
249237 . ok_or ( Errno :: Overflow ) ?,
250238 SeekWhence :: End => data_len. checked_add ( offset) . ok_or ( Errno :: Overflow ) ?,
251239 _ => return Err ( Errno :: Inval ) ,
252240 } ;
253241
242+ if new_pos < 0 {
243+ return Err ( Errno :: Inval ) ;
244+ }
245+
254246 if new_pos > data_len {
255247 guard. data . resize ( new_pos. try_into ( ) . unwrap ( ) , 0 ) ;
256248 guard. attr . st_size = guard. data . len ( ) . try_into ( ) . unwrap ( ) ;
257249 }
258- * pos_guard = new_pos. try_into ( ) . unwrap ( ) ;
250+ * pos_guard = new_pos as usize ;
259251
260252 Ok ( new_pos)
261253 }
0 commit comments