brintos

brintos / linux-shallow public Read only

0
0
Text · 592 B · 7b23005 Raw
31 lines · c
1// SPDX-License-Identifier: GPL-2.02static int find_map(void **start, void **end, const char *name)3{4	FILE *maps;5	char line[128];6	int found = 0;7 8	maps = fopen("/proc/self/maps", "r");9	if (!maps) {10		fprintf(stderr, "cannot open maps\n");11		return -1;12	}13 14	while (!found && fgets(line, sizeof(line), maps)) {15		int m = -1;16 17		/* We care only about private r-x mappings. */18		if (2 != sscanf(line, "%p-%p r-xp %*x %*x:%*x %*u %n",19				start, end, &m))20			continue;21		if (m < 0)22			continue;23 24		if (!strncmp(&line[m], name, strlen(name)))25			found = 1;26	}27 28	fclose(maps);29	return !found;30}31