From de216a83c249f840ed7ab77170e2f235aed2d937 Mon Sep 17 00:00:00 2001 From: Johan Karlsson Date: Wed, 15 Jan 2003 21:22:55 +0000 Subject: [PATCH] realpath(3) should use PATH_MAX instead of MAXPATHLEN according to POSIX. This also reverts the PATH_MAX -> MAXPATHLEN part of rev 1.3 of src/bin/realpath/realpath.c Requested by: imp Reviewed by: imp, bde --- bin/realpath/realpath.c | 2 +- lib/libc/stdlib/realpath.3 | 4 ++-- lib/libc/stdlib/realpath.c | 14 +++++++------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/bin/realpath/realpath.c b/bin/realpath/realpath.c index 8b7177f7dc48..224e775e7df6 100644 --- a/bin/realpath/realpath.c +++ b/bin/realpath/realpath.c @@ -46,7 +46,7 @@ static void usage(void) __dead2; int main(int argc, char *argv[]) { - char buf[MAXPATHLEN]; + char buf[PATH_MAX]; char *p; if (argc == 2) { diff --git a/lib/libc/stdlib/realpath.3 b/lib/libc/stdlib/realpath.3 index 2351c8fd76d4..2f84d1d34135 100644 --- a/lib/libc/stdlib/realpath.3 +++ b/lib/libc/stdlib/realpath.3 @@ -47,7 +47,7 @@ .In sys/param.h .In stdlib.h .Ft "char *" -.Fn realpath "const char *pathname" "char resolved_path[MAXPATHLEN]" +.Fn realpath "const char *pathname" "char resolved_path[PATH_MAX]" .Sh DESCRIPTION The .Fn realpath @@ -67,7 +67,7 @@ The argument .Em must refer to a buffer capable of storing at least -.Dv MAXPATHLEN +.Dv PATH_MAX characters. .Pp The diff --git a/lib/libc/stdlib/realpath.c b/lib/libc/stdlib/realpath.c index da6f1e20ee20..8429986aed7b 100644 --- a/lib/libc/stdlib/realpath.c +++ b/lib/libc/stdlib/realpath.c @@ -52,7 +52,7 @@ __FBSDID("$FreeBSD$"); #include "un-namespace.h" /* - * char *realpath(const char *path, char resolved_path[MAXPATHLEN]); + * char *realpath(const char *path, char resolved_path[PATH_MAX]); * * Find the real name of path, by removing all ".", ".." and symlink * components. Returns (resolved) on success, or (NULL) on failure, @@ -65,7 +65,7 @@ realpath(path, resolved) { struct stat sb; int fd, n, rootd, serrno; - char *p, *q, wbuf[MAXPATHLEN]; + char *p, *q, wbuf[PATH_MAX]; int symlinks = 0; /* Save the starting point. */ @@ -82,8 +82,8 @@ realpath(path, resolved) * if it is a directory, then change to that directory. * get the current directory name and append the basename. */ - (void)strncpy(resolved, path, MAXPATHLEN - 1); - resolved[MAXPATHLEN - 1] = '\0'; + (void)strncpy(resolved, path, PATH_MAX - 1); + resolved[PATH_MAX - 1] = '\0'; loop: q = strrchr(resolved, '/'); if (q != NULL) { @@ -109,7 +109,7 @@ realpath(path, resolved) errno = ELOOP; goto err1; } - n = readlink(p, resolved, MAXPATHLEN - 1); + n = readlink(p, resolved, PATH_MAX - 1); if (n < 0) goto err1; resolved[n] = '\0'; @@ -127,7 +127,7 @@ realpath(path, resolved) * the current directory. */ (void)strcpy(wbuf, p); - if (getcwd(resolved, MAXPATHLEN) == 0) + if (getcwd(resolved, PATH_MAX) == 0) goto err1; /* @@ -140,7 +140,7 @@ realpath(path, resolved) rootd = 0; if (*wbuf) { - if (strlen(resolved) + strlen(wbuf) + rootd + 1 > MAXPATHLEN) { + if (strlen(resolved) + strlen(wbuf) + rootd + 1 > PATH_MAX) { errno = ENAMETOOLONG; goto err1; }