From e097eb5483b00631ef49353a22a73c2c48939d95 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Tue, 21 Apr 2026 06:39:50 +0100 Subject: lbutils: don't use stack memory for path strings Signed-off-by: Leah Rowe --- util/libreboot-utils/lib/file.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'util/libreboot-utils/lib/file.c') diff --git a/util/libreboot-utils/lib/file.c b/util/libreboot-utils/lib/file.c index efc23ba9..0385ebbb 100644 --- a/util/libreboot-utils/lib/file.c +++ b/util/libreboot-utils/lib/file.c @@ -521,6 +521,8 @@ fs_dirname_basename(const char *path, char *buf = NULL; char *slash; size_t len; + const char *d = NULL; + const char *b = NULL; errno = 0; if (if_err(path == NULL || dir == NULL || base == NULL, EFAULT)) @@ -539,22 +541,27 @@ fs_dirname_basename(const char *path, if (slash) { *slash = '\0'; - *dir = buf; - *base = slash + 1; + d = buf; + b = slash + 1; - if (**dir == '\0') { - (*dir)[0] = '/'; - (*dir)[1] = '\0'; - } + if (*d == '\0') + d = "/"; } else if (allow_relative) { - sdup(".", PATH_MAX, dir); - *base = buf; + d = "."; + b = buf; } else { free_and_set_null(&buf); goto err; } + if (dup_pair(dir, d, base, b) < 0) { + free_and_set_null(&buf); + goto err; + } + + free_and_set_null(&buf); + reset_caller_errno(0); return 0; err: -- cgit v1.2.1