From 989f4676c5d1a4dae0ed653db77f75e968fc68a2 Mon Sep 17 00:00:00 2001 From: johan Date: Wed, 15 Jan 2003 21:22:55 +0000 Subject: 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 --- lib/libc/stdlib/realpath.3 | 4 ++-- lib/libc/stdlib/realpath.c | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) (limited to 'lib/libc') diff --git a/lib/libc/stdlib/realpath.3 b/lib/libc/stdlib/realpath.3 index 2351c8f..2f84d1d 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 da6f1e2..8429986 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 @@ loop: 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 @@ loop: * the current directory. */ (void)strcpy(wbuf, p); - if (getcwd(resolved, MAXPATHLEN) == 0) + if (getcwd(resolved, PATH_MAX) == 0) goto err1; /* @@ -140,7 +140,7 @@ loop: 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; } -- cgit v1.1