From d534e161d09291da1b2ade79424d7742134489d8 Mon Sep 17 00:00:00 2001 From: Derek Weitzel Date: Tue, 26 Jan 2021 11:21:50 -0600 Subject: [PATCH] Avoid undefined behavior by using a unique_ptr rather than an empty vector. Fixes #39 --- src/scitokens_cache.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/scitokens_cache.cpp b/src/scitokens_cache.cpp index d6dd4ab..b9e50d3 100644 --- a/src/scitokens_cache.cpp +++ b/src/scitokens_cache.cpp @@ -1,7 +1,7 @@ #include #include -#include +#include #include #include @@ -54,12 +54,11 @@ get_cache_file() { auto bufsize = sysconf(_SC_GETPW_R_SIZE_MAX); bufsize = (bufsize == -1) ? 16384 : bufsize; - std::vector buf; - buf.reserve(bufsize); + std::unique_ptr buf(new char[bufsize]); std::string home_dir; struct passwd pwd, *result = NULL; - getpwuid_r(geteuid(), &pwd, &buf[0], bufsize, &result); + getpwuid_r(geteuid(), &pwd, buf.get(), bufsize, &result); if (result && result->pw_dir) { home_dir = result->pw_dir; home_dir += "/.cache";