perf find-map: Remove PATH_MAX 128-byte stack array restriction

Use getline() to dynamically allocate the required line buffer for maps
parsing, guaranteeing bounds safety and avoiding compiler warnings
by evaluating the return value in the loop condition directly.

Assisted-by: Antigravity:gemini-3.5-flash
Signed-off-by: Ian Rogers <irogers@google.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
This commit is contained in:
Ian Rogers
2026-07-21 16:52:50 -07:00
committed by Namhyung Kim
parent 43a163494f
commit e46a9b8150

View File

@@ -1,8 +1,13 @@
// SPDX-License-Identifier: GPL-2.0
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static int find_map(void **start, void **end, const char *name)
{
FILE *maps;
char line[128];
char *line = NULL;
size_t len = 0;
int found = 0;
maps = fopen("/proc/self/maps", "r");
@@ -11,7 +16,7 @@ static int find_map(void **start, void **end, const char *name)
return -1;
}
while (!found && fgets(line, sizeof(line), maps)) {
while (!found && getline(&line, &len, maps) != -1) {
int m = -1;
/* We care only about private r-x mappings. */
@@ -25,6 +30,7 @@ static int find_map(void **start, void **end, const char *name)
found = 1;
}
free(line);
fclose(maps);
return !found;
}