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 | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/filename.c b/filename.c index eb6b16c..f17e3ba 100644 --- a/filename.c +++ b/filename.c @@ -829,10 +829,26 @@ lglob(filename) lrealpath(path) char *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