From 404fcb1c102af07a6760a80fa994d20e9a4de7f7 Mon Sep 17 00:00:00 2001 From: George Kiagiadakis Date: Fri, 9 Jul 2021 13:35:36 +0300 Subject: lib: avoid static buffers, use alloca() more Signed-off-by: George Kiagiadakis --- lib/utils.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'lib/utils.c') diff --git a/lib/utils.c b/lib/utils.c index 4d91241..37bcce9 100644 --- a/lib/utils.c +++ b/lib/utils.c @@ -91,7 +91,6 @@ int icipc_construct_socket_path(const char *name, char *buf, size_t buf_size) { bool path_is_absolute; const char *runtime_dir = NULL; struct passwd pwd, *result = NULL; - char buffer[4096]; int name_size; path_is_absolute = name[0] == '/'; @@ -105,8 +104,12 @@ int icipc_construct_socket_path(const char *name, char *buf, size_t buf_size) { if (runtime_dir == NULL) runtime_dir = getenv("USERPROFILE"); if (runtime_dir == NULL) { + long bufsize = sysconf(_SC_GETPW_R_SIZE_MAX); + if (bufsize == -1) + bufsize = 4096; + char *buffer = alloca(bufsize); if (getpwuid_r - (getuid(), &pwd, buffer, sizeof(buffer), + (getuid(), &pwd, buffer, bufsize, &result) == 0) runtime_dir = result ? result->pw_dir : NULL; } -- cgit 1.2.3-korg