Skip to content

Commit 4d2bc88

Browse files
Revert "Revert "Track permissions as bytes""
This reverts commit 9bc29a0.
1 parent 0041f33 commit 4d2bc88

File tree

1 file changed

+14
-16
lines changed

1 file changed

+14
-16
lines changed

src/symbolize/gimli/parse_running_mmaps_unix.rs

Lines changed: 14 additions & 16 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: [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

Comments
 (0)