mirror of
https://git.FreeBSD.org/src.git
synced 2025-02-05 18:05:16 +00:00
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
This commit is contained in:
parent
9bc01124e7
commit
de216a83c2
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=109331
@ -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) {
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user