Skip to content

Commit dca80ea

Browse files
Revert "Revert "Track permissions as bytes""
This reverts commit 9bc29a0.
1 parent 268a18d commit dca80ea

File tree

1 file changed

+14
-16
lines changed

1 file changed

+14
-16
lines changed

src/symbolize/gimli/parse_running_mmaps_unix.rs

+14-16
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: [char; 4],
21+
// perms: [u8; 4],
2222
/// Offset into the file (or "whatever").
2323
// offset: usize,
2424
/// device (major, minor)
@@ -105,14 +105,12 @@ impl FromStr for MapsEntry {
105105
} else {
106106
return Err(parse_err);
107107
};
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);
116114
};
117115
let _offset = hex(offset_str)?;
118116
let _dev = if let Some((major, minor)) = dev_str.split_once(':') {
@@ -125,7 +123,7 @@ impl FromStr for MapsEntry {
125123

126124
Ok(MapsEntry {
127125
address,
128-
perms,
126+
// perms,
129127
// offset,
130128
// dev,
131129
// inode,
@@ -145,7 +143,7 @@ fn check_maps_entry_parsing_64bit() {
145143
.unwrap(),
146144
MapsEntry {
147145
address: (0xffffffffff600000, 0xffffffffff601000),
148-
perms: ['-', '-', 'x', 'p'],
146+
// perms: *b"--xp",
149147
// offset: 0x00000000,
150148
// dev: (0x00, 0x00),
151149
// inode: 0x0,
@@ -160,7 +158,7 @@ fn check_maps_entry_parsing_64bit() {
160158
.unwrap(),
161159
MapsEntry {
162160
address: (0x7f5985f46000, 0x7f5985f48000),
163-
perms: ['r', 'w', '-', 'p'],
161+
// perms: *b"rw-p",
164162
// offset: 0x00039000,
165163
// dev: (0x103, 0x06),
166164
// inode: 0x76021795,
@@ -173,7 +171,7 @@ fn check_maps_entry_parsing_64bit() {
173171
.unwrap(),
174172
MapsEntry {
175173
address: (0x35b1a21000, 0x35b1a22000),
176-
perms: ['r', 'w', '-', 'p'],
174+
// perms: *b"rw-p",
177175
// offset: 0x00000000,
178176
// dev: (0x00, 0x00),
179177
// inode: 0x0,
@@ -197,7 +195,7 @@ fn check_maps_entry_parsing_32bit() {
197195
.unwrap(),
198196
MapsEntry {
199197
address: (0x08056000, 0x08077000),
200-
perms: ['r', 'w', '-', 'p'],
198+
// perms: *b"rw-p",
201199
// offset: 0x00000000,
202200
// dev: (0x00, 0x00),
203201
// inode: 0x0,
@@ -212,7 +210,7 @@ fn check_maps_entry_parsing_32bit() {
212210
.unwrap(),
213211
MapsEntry {
214212
address: (0xb7c79000, 0xb7e02000),
215-
perms: ['r', '-', '-', 'p'],
213+
// perms: *b"r--p",
216214
// offset: 0x00000000,
217215
// dev: (0x08, 0x01),
218216
// inode: 0x60662705,
@@ -225,7 +223,7 @@ fn check_maps_entry_parsing_32bit() {
225223
.unwrap(),
226224
MapsEntry {
227225
address: (0xb7e02000, 0xb7e03000),
228-
perms: ['r', 'w', '-', 'p'],
226+
// perms: *b"rw-p",
229227
// offset: 0x00000000,
230228
// dev: (0x00, 0x00),
231229
// inode: 0x0,

0 commit comments

Comments
 (0)