Skip to content

Commit 80420cb

Browse files
Revert "Track permissions as bytes"
This reverts commit 25bddbf.
1 parent 11c4dc3 commit 80420cb

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

src/symbolize/gimli/parse_running_mmaps_unix.rs

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ pub(super) struct MapsEntry {
2020
/// x = execute
2121
/// s = shared
2222
/// p = private (copy on write)
23-
// perms: [u8; 4],
23+
perms: [char; 4],
2424
/// Offset into the file (or "whatever").
2525
// offset: u64,
2626
/// device (major, minor)
@@ -115,12 +115,14 @@ impl FromStr for MapsEntry {
115115
} else {
116116
return Err(parse_err);
117117
};
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);
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
124126
};
125127
let _offset = hex(offset_str)?;
126128
let _dev = if let Some((major, minor)) = dev_str.split_once(':') {
@@ -133,7 +135,7 @@ impl FromStr for MapsEntry {
133135

134136
Ok(MapsEntry {
135137
address,
136-
// perms,
138+
perms,
137139
// offset,
138140
// dev,
139141
// inode,
@@ -153,7 +155,7 @@ fn check_maps_entry_parsing_64bit() {
153155
.unwrap(),
154156
MapsEntry {
155157
address: (0xffffffffff600000, 0xffffffffff601000),
156-
// perms: *b"--xp",
158+
perms: ['-', '-', 'x', 'p'],
157159
// offset: 0x00000000,
158160
// dev: (0x00, 0x00),
159161
// inode: 0x0,
@@ -168,7 +170,7 @@ fn check_maps_entry_parsing_64bit() {
168170
.unwrap(),
169171
MapsEntry {
170172
address: (0x7f5985f46000, 0x7f5985f48000),
171-
// perms: *b"rw-p",
173+
perms: ['r', 'w', '-', 'p'],
172174
// offset: 0x00039000,
173175
// dev: (0x103, 0x06),
174176
// inode: 0x76021795,
@@ -181,7 +183,7 @@ fn check_maps_entry_parsing_64bit() {
181183
.unwrap(),
182184
MapsEntry {
183185
address: (0x35b1a21000, 0x35b1a22000),
184-
// perms: *b"rw-p",
186+
perms: ['r', 'w', '-', 'p'],
185187
// offset: 0x00000000,
186188
// dev: (0x00, 0x00),
187189
// inode: 0x0,
@@ -205,7 +207,7 @@ fn check_maps_entry_parsing_32bit() {
205207
.unwrap(),
206208
MapsEntry {
207209
address: (0x08056000, 0x08077000),
208-
// perms: *b"rw-p",
210+
perms: ['r', 'w', '-', 'p'],
209211
// offset: 0x00000000,
210212
// dev: (0x00, 0x00),
211213
// inode: 0x0,
@@ -220,7 +222,7 @@ fn check_maps_entry_parsing_32bit() {
220222
.unwrap(),
221223
MapsEntry {
222224
address: (0xb7c79000, 0xb7e02000),
223-
// perms: *b"r--p",
225+
perms: ['r', '-', '-', 'p'],
224226
// offset: 0x00000000,
225227
// dev: (0x08, 0x01),
226228
// inode: 0x60662705,
@@ -233,7 +235,7 @@ fn check_maps_entry_parsing_32bit() {
233235
.unwrap(),
234236
MapsEntry {
235237
address: (0xb7e02000, 0xb7e03000),
236-
// perms: *b"rw-p",
238+
perms: ['r', 'w', '-', 'p'],
237239
// offset: 0x00000000,
238240
// dev: (0x00, 0x00),
239241
// inode: 0x0,

0 commit comments

Comments
 (0)