diff options
author | johan <johan@FreeBSD.org> | 2003-01-15 21:22:55 +0000 |
---|---|---|
committer | johan <johan@FreeBSD.org> | 2003-01-15 21:22:55 +0000 |
commit | 989f4676c5d1a4dae0ed653db77f75e968fc68a2 (patch) | |
tree | d6bcf799cebe1ae46ef4875e0809bb5299e8bfd3 /lib/libc/stdlib | |
parent | 7b1874978c2d6c3244991e9fb0e20f06d67c48ca (diff) | |
download | FreeBSD-src-989f4676c5d1a4dae0ed653db77f75e968fc68a2.zip FreeBSD-src-989f4676c5d1a4dae0ed653db77f75e968fc68a2.tar.gz |
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
Diffstat (limited to 'lib/libc/stdlib')
-rw-r--r-- | lib/libc/stdlib/realpath.3 | 4 | ||||
-rw-r--r-- | lib/libc/stdlib/realpath.c | 14 |
2 files changed, 9 insertions, 9 deletions
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; } |