Control: tags -1 - moreinfo I'll be honest with you, I don't really know.
Locking in the memory map on read() instead of on open() seems at least
as bad if not worse.
For read -> exec -> read, the second read yielding the partial
"b3000 r--p 00000000 00:8a 816985
/home/nabijaczleweli/uwu/otp/a.out\n"
isn't pretty, but the alternative is that you get your line truncated
for no reason if your buffer falls mid-line,
which does now sound worse than keeping that as-is.
Of course, the seek behaviour seems obviously wrong as well:
lseek(0, 200, SET) reads empty,
lseek(0, 220, SET) reads the first line skip 20 characters,
lseek(0, 201, SET) reads the first line skip 1 character,
lseek(0, 110, SET) reads the first line skip 10 characters:
(yes, the hundred digit seems meaningless here? 6.1.0-35-amd64)
int main() {
close(0);
open("/proc/self/maps", 0);
lseek(0, (long)110, 0);
execlp("cat", "cat", (void *)0);
}
but that seems tangential.
Best,
signature.asc
Description: PGP signature

