@@ -20,7 +20,7 @@ pub(super) struct MapsEntry {
20
20
/// x = execute
21
21
/// s = shared
22
22
/// p = private (copy on write)
23
- perms : [ char ; 4 ] ,
23
+ // perms: [u8 ; 4],
24
24
/// Offset into the file (or "whatever").
25
25
// offset: u64,
26
26
/// device (major, minor)
@@ -115,14 +115,12 @@ impl FromStr for MapsEntry {
115
115
} else {
116
116
return Err ( parse_err) ;
117
117
} ;
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) ;
126
124
} ;
127
125
let _offset = hex ( offset_str) ?;
128
126
let _dev = if let Some ( ( major, minor) ) = dev_str. split_once ( ':' ) {
@@ -135,7 +133,7 @@ impl FromStr for MapsEntry {
135
133
136
134
Ok ( MapsEntry {
137
135
address,
138
- perms,
136
+ // perms,
139
137
// offset,
140
138
// dev,
141
139
// inode,
@@ -155,7 +153,7 @@ fn check_maps_entry_parsing_64bit() {
155
153
. unwrap( ) ,
156
154
MapsEntry {
157
155
address: ( 0xffffffffff600000 , 0xffffffffff601000 ) ,
158
- perms: [ '-' , '-' , 'x' , 'p' ] ,
156
+ // perms: *b"--xp" ,
159
157
// offset: 0x00000000,
160
158
// dev: (0x00, 0x00),
161
159
// inode: 0x0,
@@ -170,7 +168,7 @@ fn check_maps_entry_parsing_64bit() {
170
168
. unwrap( ) ,
171
169
MapsEntry {
172
170
address: ( 0x7f5985f46000 , 0x7f5985f48000 ) ,
173
- perms: [ 'r' , 'w' , '-' , 'p' ] ,
171
+ // perms: *b"rw-p" ,
174
172
// offset: 0x00039000,
175
173
// dev: (0x103, 0x06),
176
174
// inode: 0x76021795,
@@ -183,7 +181,7 @@ fn check_maps_entry_parsing_64bit() {
183
181
. unwrap( ) ,
184
182
MapsEntry {
185
183
address: ( 0x35b1a21000 , 0x35b1a22000 ) ,
186
- perms: [ 'r' , 'w' , '-' , 'p' ] ,
184
+ // perms: *b"rw-p" ,
187
185
// offset: 0x00000000,
188
186
// dev: (0x00, 0x00),
189
187
// inode: 0x0,
@@ -207,7 +205,7 @@ fn check_maps_entry_parsing_32bit() {
207
205
. unwrap( ) ,
208
206
MapsEntry {
209
207
address: ( 0x08056000 , 0x08077000 ) ,
210
- perms: [ 'r' , 'w' , '-' , 'p' ] ,
208
+ // perms: *b"rw-p" ,
211
209
// offset: 0x00000000,
212
210
// dev: (0x00, 0x00),
213
211
// inode: 0x0,
@@ -222,7 +220,7 @@ fn check_maps_entry_parsing_32bit() {
222
220
. unwrap( ) ,
223
221
MapsEntry {
224
222
address: ( 0xb7c79000 , 0xb7e02000 ) ,
225
- perms: [ 'r' , '-' , '-' , 'p' ] ,
223
+ // perms: *b"r--p" ,
226
224
// offset: 0x00000000,
227
225
// dev: (0x08, 0x01),
228
226
// inode: 0x60662705,
@@ -235,7 +233,7 @@ fn check_maps_entry_parsing_32bit() {
235
233
. unwrap( ) ,
236
234
MapsEntry {
237
235
address: ( 0xb7e02000 , 0xb7e03000 ) ,
238
- perms: [ 'r' , 'w' , '-' , 'p' ] ,
236
+ // perms: *b"rw-p" ,
239
237
// offset: 0x00000000,
240
238
// dev: (0x00, 0x00),
241
239
// inode: 0x0,
0 commit comments