@@ -18,7 +18,7 @@ pub(super) struct MapsEntry {
1818 /// x = execute
1919 /// s = shared
2020 /// p = private (copy on write)
21- perms : [ char ; 4 ] ,
21+ // perms: [u8 ; 4],
2222 /// Offset into the file (or "whatever").
2323 // offset: usize,
2424 /// device (major, minor)
@@ -105,14 +105,12 @@ impl FromStr for MapsEntry {
105105 } else {
106106 return Err ( parse_err) ;
107107 } ;
108- let perms: [ char ; 4 ] = {
109- let mut chars = perms_str. chars ( ) ;
110- let mut c = || chars. next ( ) . ok_or ( "insufficient perms" ) ;
111- let perms = [ c ( ) ?, c ( ) ?, c ( ) ?, c ( ) ?] ;
112- if chars. next ( ) . is_some ( ) {
113- return Err ( "too many perms" ) ;
114- }
115- perms
108+ let _perms = if let & [ r, w, x, p, ..] = perms_str. as_bytes ( ) {
109+ // If a system in the future adds a 5th field to the permission list,
110+ // there's no reason to assume previous fields were invalidated.
111+ [ r, w, x, p]
112+ } else {
113+ return Err ( parse_err) ;
116114 } ;
117115 let _offset = hex ( offset_str) ?;
118116 let _dev = if let Some ( ( major, minor) ) = dev_str. split_once ( ':' ) {
@@ -125,7 +123,7 @@ impl FromStr for MapsEntry {
125123
126124 Ok ( MapsEntry {
127125 address,
128- perms,
126+ // perms,
129127 // offset,
130128 // dev,
131129 // inode,
@@ -145,7 +143,7 @@ fn check_maps_entry_parsing_64bit() {
145143 . unwrap( ) ,
146144 MapsEntry {
147145 address: ( 0xffffffffff600000 , 0xffffffffff601000 ) ,
148- perms: [ '-' , '-' , 'x' , 'p' ] ,
146+ // perms: *b"--xp" ,
149147 // offset: 0x00000000,
150148 // dev: (0x00, 0x00),
151149 // inode: 0x0,
@@ -160,7 +158,7 @@ fn check_maps_entry_parsing_64bit() {
160158 . unwrap( ) ,
161159 MapsEntry {
162160 address: ( 0x7f5985f46000 , 0x7f5985f48000 ) ,
163- perms: [ 'r' , 'w' , '-' , 'p' ] ,
161+ // perms: *b"rw-p" ,
164162 // offset: 0x00039000,
165163 // dev: (0x103, 0x06),
166164 // inode: 0x76021795,
@@ -173,7 +171,7 @@ fn check_maps_entry_parsing_64bit() {
173171 . unwrap( ) ,
174172 MapsEntry {
175173 address: ( 0x35b1a21000 , 0x35b1a22000 ) ,
176- perms: [ 'r' , 'w' , '-' , 'p' ] ,
174+ // perms: *b"rw-p" ,
177175 // offset: 0x00000000,
178176 // dev: (0x00, 0x00),
179177 // inode: 0x0,
@@ -197,7 +195,7 @@ fn check_maps_entry_parsing_32bit() {
197195 . unwrap( ) ,
198196 MapsEntry {
199197 address: ( 0x08056000 , 0x08077000 ) ,
200- perms: [ 'r' , 'w' , '-' , 'p' ] ,
198+ // perms: *b"rw-p" ,
201199 // offset: 0x00000000,
202200 // dev: (0x00, 0x00),
203201 // inode: 0x0,
@@ -212,7 +210,7 @@ fn check_maps_entry_parsing_32bit() {
212210 . unwrap( ) ,
213211 MapsEntry {
214212 address: ( 0xb7c79000 , 0xb7e02000 ) ,
215- perms: [ 'r' , '-' , '-' , 'p' ] ,
213+ // perms: *b"r--p" ,
216214 // offset: 0x00000000,
217215 // dev: (0x08, 0x01),
218216 // inode: 0x60662705,
@@ -225,7 +223,7 @@ fn check_maps_entry_parsing_32bit() {
225223 . unwrap( ) ,
226224 MapsEntry {
227225 address: ( 0xb7e02000 , 0xb7e03000 ) ,
228- perms: [ 'r' , 'w' , '-' , 'p' ] ,
226+ // perms: *b"rw-p" ,
229227 // offset: 0x00000000,
230228 // dev: (0x00, 0x00),
231229 // inode: 0x0,
0 commit comments