mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 07:03:28 -04:00
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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user