mirror of
https://git.hardenedbsd.org/hardenedbsd/HardenedBSD.git
synced 2024-11-27 11:20:58 +01:00
Use pread to implement pread, rather than taking a detour throug stdio.
PR: 52190 Submitted by: Dan Nelson <dnelson@allantgroup.com>
This commit is contained in:
parent
5214320f76
commit
b637237cba
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=127331
@ -169,23 +169,9 @@ get_syscall(const char *name) {
|
||||
|
||||
static int
|
||||
get_struct(int procfd, void *offset, void *buf, int len) {
|
||||
char *pos;
|
||||
FILE *p;
|
||||
int c, fd;
|
||||
|
||||
if ((fd = dup(procfd)) == -1)
|
||||
err(1, "dup");
|
||||
if ((p = fdopen(fd, "r")) == NULL)
|
||||
err(1, "fdopen");
|
||||
if (fseeko(p, (uintptr_t)offset, SEEK_SET) == 0) {
|
||||
for (pos = (char *)buf; len--; pos++) {
|
||||
if ((c = fgetc(p)) == EOF)
|
||||
return (-1);
|
||||
*pos = c;
|
||||
}
|
||||
} else
|
||||
bzero(buf, len);
|
||||
fclose(p);
|
||||
if (pread(procfd, buf, len, (uintptr_t)offset) != len)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user