Skip to content

Commit 9bc29a0

Browse files
Revert "Track permissions as bytes"
This reverts commit 25bddbf.
1 parent 6a05e64 commit 9bc29a0

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

src/symbolize/gimli/parse_running_mmaps_unix.rs

+16-14
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ pub(super) struct MapsEntry {
1818
/// x = execute
1919
/// s = shared
2020
/// p = private (copy on write)
21-
// perms: [u8; 4],
21+
perms: [char; 4],
2222
/// Offset into the file (or "whatever").
2323
// offset: usize,
2424
/// device (major, minor)
@@ -105,12 +105,14 @@ impl FromStr for MapsEntry {
105105
} else {
106106
return Err(parse_err);
107107
};
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);
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
114116
};
115117
let _offset = hex(offset_str)?;
116118
let _dev = if let Some((major, minor)) = dev_str.split_once(':') {
@@ -123,7 +125,7 @@ impl FromStr for MapsEntry {
123125

124126
Ok(MapsEntry {
125127
address,
126-
// perms,
128+
perms,
127129
// offset,
128130
// dev,
129131
// inode,
@@ -143,7 +145,7 @@ fn check_maps_entry_parsing_64bit() {
143145
.unwrap(),
144146
MapsEntry {
145147
address: (0xffffffffff600000, 0xffffffffff601000),
146-
// perms: *b"--xp",
148+
perms: ['-', '-', 'x', 'p'],
147149
// offset: 0x00000000,
148150
// dev: (0x00, 0x00),
149151
// inode: 0x0,
@@ -158,7 +160,7 @@ fn check_maps_entry_parsing_64bit() {
158160
.unwrap(),
159161
MapsEntry {
160162
address: (0x7f5985f46000, 0x7f5985f48000),
161-
// perms: *b"rw-p",
163+
perms: ['r', 'w', '-', 'p'],
162164
// offset: 0x00039000,
163165
// dev: (0x103, 0x06),
164166
// inode: 0x76021795,
@@ -171,7 +173,7 @@ fn check_maps_entry_parsing_64bit() {
171173
.unwrap(),
172174
MapsEntry {
173175
address: (0x35b1a21000, 0x35b1a22000),
174-
// perms: *b"rw-p",
176+
perms: ['r', 'w', '-', 'p'],
175177
// offset: 0x00000000,
176178
// dev: (0x00, 0x00),
177179
// inode: 0x0,
@@ -195,7 +197,7 @@ fn check_maps_entry_parsing_32bit() {
195197
.unwrap(),
196198
MapsEntry {
197199
address: (0x08056000, 0x08077000),
198-
// perms: *b"rw-p",
200+
perms: ['r', 'w', '-', 'p'],
199201
// offset: 0x00000000,
200202
// dev: (0x00, 0x00),
201203
// inode: 0x0,
@@ -210,7 +212,7 @@ fn check_maps_entry_parsing_32bit() {
210212
.unwrap(),
211213
MapsEntry {
212214
address: (0xb7c79000, 0xb7e02000),
213-
// perms: *b"r--p",
215+
perms: ['r', '-', '-', 'p'],
214216
// offset: 0x00000000,
215217
// dev: (0x08, 0x01),
216218
// inode: 0x60662705,
@@ -223,7 +225,7 @@ fn check_maps_entry_parsing_32bit() {
223225
.unwrap(),
224226
MapsEntry {
225227
address: (0xb7e02000, 0xb7e03000),
226-
// perms: *b"rw-p",
228+
perms: ['r', 'w', '-', 'p'],
227229
// offset: 0x00000000,
228230
// dev: (0x00, 0x00),
229231
// inode: 0x0,

0 commit comments

Comments
 (0)