@@ -20,7 +20,7 @@ pub(super) struct MapsEntry {
2020 /// x = execute
2121 /// s = shared
2222 /// p = private (copy on write)
23- perms : [ char ; 4 ] ,
23+ // perms: [u8 ; 4],
2424 /// Offset into the file (or "whatever").
2525 // offset: u64,
2626 /// device (major, minor)
@@ -115,14 +115,12 @@ impl FromStr for MapsEntry {
115115 } else {
116116 return Err ( parse_err) ;
117117 } ;
118- let perms: [ char ; 4 ] = {
119- let mut chars = perms_str. chars ( ) ;
120- let mut c = || chars. next ( ) . ok_or ( "insufficient perms" ) ;
121- let perms = [ c ( ) ?, c ( ) ?, c ( ) ?, c ( ) ?] ;
122- if chars. next ( ) . is_some ( ) {
123- return Err ( "too many perms" ) ;
124- }
125- perms
118+ let _perms = if let & [ r, w, x, p, ..] = perms_str. as_bytes ( ) {
119+ // If a system in the future adds a 5th field to the permission list,
120+ // there's no reason to assume previous fields were invalidated.
121+ [ r, w, x, p]
122+ } else {
123+ return Err ( parse_err) ;
126124 } ;
127125 let _offset = hex ( offset_str) ?;
128126 let _dev = if let Some ( ( major, minor) ) = dev_str. split_once ( ':' ) {
@@ -135,7 +133,7 @@ impl FromStr for MapsEntry {
135133
136134 Ok ( MapsEntry {
137135 address,
138- perms,
136+ // perms,
139137 // offset,
140138 // dev,
141139 // inode,
@@ -155,7 +153,7 @@ fn check_maps_entry_parsing_64bit() {
155153 . unwrap( ) ,
156154 MapsEntry {
157155 address: ( 0xffffffffff600000 , 0xffffffffff601000 ) ,
158- perms: [ '-' , '-' , 'x' , 'p' ] ,
156+ // perms: *b"--xp" ,
159157 // offset: 0x00000000,
160158 // dev: (0x00, 0x00),
161159 // inode: 0x0,
@@ -170,7 +168,7 @@ fn check_maps_entry_parsing_64bit() {
170168 . unwrap( ) ,
171169 MapsEntry {
172170 address: ( 0x7f5985f46000 , 0x7f5985f48000 ) ,
173- perms: [ 'r' , 'w' , '-' , 'p' ] ,
171+ // perms: *b"rw-p" ,
174172 // offset: 0x00039000,
175173 // dev: (0x103, 0x06),
176174 // inode: 0x76021795,
@@ -183,7 +181,7 @@ fn check_maps_entry_parsing_64bit() {
183181 . unwrap( ) ,
184182 MapsEntry {
185183 address: ( 0x35b1a21000 , 0x35b1a22000 ) ,
186- perms: [ 'r' , 'w' , '-' , 'p' ] ,
184+ // perms: *b"rw-p" ,
187185 // offset: 0x00000000,
188186 // dev: (0x00, 0x00),
189187 // inode: 0x0,
@@ -207,7 +205,7 @@ fn check_maps_entry_parsing_32bit() {
207205 . unwrap( ) ,
208206 MapsEntry {
209207 address: ( 0x08056000 , 0x08077000 ) ,
210- perms: [ 'r' , 'w' , '-' , 'p' ] ,
208+ // perms: *b"rw-p" ,
211209 // offset: 0x00000000,
212210 // dev: (0x00, 0x00),
213211 // inode: 0x0,
@@ -222,7 +220,7 @@ fn check_maps_entry_parsing_32bit() {
222220 . unwrap( ) ,
223221 MapsEntry {
224222 address: ( 0xb7c79000 , 0xb7e02000 ) ,
225- perms: [ 'r' , '-' , '-' , 'p' ] ,
223+ // perms: *b"r--p" ,
226224 // offset: 0x00000000,
227225 // dev: (0x08, 0x01),
228226 // inode: 0x60662705,
@@ -235,7 +233,7 @@ fn check_maps_entry_parsing_32bit() {
235233 . unwrap( ) ,
236234 MapsEntry {
237235 address: ( 0xb7e02000 , 0xb7e03000 ) ,
238- perms: [ 'r' , 'w' , '-' , 'p' ] ,
236+ // perms: *b"rw-p" ,
239237 // offset: 0x00000000,
240238 // dev: (0x00, 0x00),
241239 // inode: 0x0,
0 commit comments