From eea6fbc196872eeca6f02fcfba298f3e1bb62880 Mon Sep 17 00:00:00 2001 From: Guillem Jover Date: Thu, 11 Jan 2024 02:18:07 +0100 Subject: [PATCH] Do not assume PATH_MAX is defined --- filename.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/filename.c b/filename.c index f910aa5..c6bc49e 100644 --- a/filename.c +++ b/filename.c @@ -812,9 +812,24 @@ public char * lrealpath(char *path) if (!is_fake_pathname(path)) { #if HAVE_REALPATH + /* + * Not all systems support the POSIX.1-2008 realpath() behavior + * of allocating when passing a NULL argument. And PATH_MAX is + * not required to be defined, or might contain an exceedingly + * big value. We assume that if it is not defined (such as on + * GNU/Hurd), then realpath() accepts NULL. + */ +#ifndef PATH_MAX + char *rpath; + + rpath = realpath(path, NULL); + if (rpath != NULL) + return (rpath); +#else char rpath[PATH_MAX]; if (realpath(path, rpath) != NULL) return (save(rpath)); +#endif #endif } return (save(path)); -- 2.27.0