@@ -18,7 +18,7 @@ pub(super) struct MapsEntry {
18
18
/// x = execute
19
19
/// s = shared
20
20
/// p = private (copy on write)
21
- perms : [ char ; 4 ] ,
21
+ // perms: [u8 ; 4],
22
22
/// Offset into the file (or "whatever").
23
23
// offset: usize,
24
24
/// device (major, minor)
@@ -105,14 +105,12 @@ impl FromStr for MapsEntry {
105
105
} else {
106
106
return Err ( parse_err) ;
107
107
} ;
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) ;
116
114
} ;
117
115
let _offset = hex ( offset_str) ?;
118
116
let _dev = if let Some ( ( major, minor) ) = dev_str. split_once ( ':' ) {
@@ -125,7 +123,7 @@ impl FromStr for MapsEntry {
125
123
126
124
Ok ( MapsEntry {
127
125
address,
128
- perms,
126
+ // perms,
129
127
// offset,
130
128
// dev,
131
129
// inode,
@@ -145,7 +143,7 @@ fn check_maps_entry_parsing_64bit() {
145
143
. unwrap( ) ,
146
144
MapsEntry {
147
145
address: ( 0xffffffffff600000 , 0xffffffffff601000 ) ,
148
- perms: [ '-' , '-' , 'x' , 'p' ] ,
146
+ // perms: *b"--xp" ,
149
147
// offset: 0x00000000,
150
148
// dev: (0x00, 0x00),
151
149
// inode: 0x0,
@@ -160,7 +158,7 @@ fn check_maps_entry_parsing_64bit() {
160
158
. unwrap( ) ,
161
159
MapsEntry {
162
160
address: ( 0x7f5985f46000 , 0x7f5985f48000 ) ,
163
- perms: [ 'r' , 'w' , '-' , 'p' ] ,
161
+ // perms: *b"rw-p" ,
164
162
// offset: 0x00039000,
165
163
// dev: (0x103, 0x06),
166
164
// inode: 0x76021795,
@@ -173,7 +171,7 @@ fn check_maps_entry_parsing_64bit() {
173
171
. unwrap( ) ,
174
172
MapsEntry {
175
173
address: ( 0x35b1a21000 , 0x35b1a22000 ) ,
176
- perms: [ 'r' , 'w' , '-' , 'p' ] ,
174
+ // perms: *b"rw-p" ,
177
175
// offset: 0x00000000,
178
176
// dev: (0x00, 0x00),
179
177
// inode: 0x0,
@@ -197,7 +195,7 @@ fn check_maps_entry_parsing_32bit() {
197
195
. unwrap( ) ,
198
196
MapsEntry {
199
197
address: ( 0x08056000 , 0x08077000 ) ,
200
- perms: [ 'r' , 'w' , '-' , 'p' ] ,
198
+ // perms: *b"rw-p" ,
201
199
// offset: 0x00000000,
202
200
// dev: (0x00, 0x00),
203
201
// inode: 0x0,
@@ -212,7 +210,7 @@ fn check_maps_entry_parsing_32bit() {
212
210
. unwrap( ) ,
213
211
MapsEntry {
214
212
address: ( 0xb7c79000 , 0xb7e02000 ) ,
215
- perms: [ 'r' , '-' , '-' , 'p' ] ,
213
+ // perms: *b"r--p" ,
216
214
// offset: 0x00000000,
217
215
// dev: (0x08, 0x01),
218
216
// inode: 0x60662705,
@@ -225,7 +223,7 @@ fn check_maps_entry_parsing_32bit() {
225
223
. unwrap( ) ,
226
224
MapsEntry {
227
225
address: ( 0xb7e02000 , 0xb7e03000 ) ,
228
- perms: [ 'r' , 'w' , '-' , 'p' ] ,
226
+ // perms: *b"rw-p" ,
229
227
// offset: 0x00000000,
230
228
// dev: (0x00, 0x00),
231
229
// inode: 0x0,
0 commit comments