Skip to content

Commit

Permalink
unix: don't use _POSIX_PATH_MAX
Browse files Browse the repository at this point in the history
Libuv was using _POSIX_PATH_MAX wrong. Bug introduced in commit b56d279
("unix: do not require PATH_MAX to be defined") from September 2018.

_POSIX_PATH_MAX is the minimum max path size guaranteed by POSIX, not
the actual max path size of the system libuv runs on. _POSIX_PATH_MAX
is always 256, the real max is often much bigger.

This commit fixes buffer overruns when processing very long paths in
uv_fs_readlink() and uv_fs_realpath() because libuv was not allocating
enough memory to store the result.

Fixes: #2965
PR-URL: #2966
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Jameson Nash <vtjnash@gmail.com>
  • Loading branch information
bnoordhuis authored and cjihrig committed Aug 24, 2020
1 parent 79c531c commit 0e6e862
Showing 1 changed file with 1 addition and 3 deletions.
4 changes: 1 addition & 3 deletions src/unix/internal.h
Expand Up @@ -62,9 +62,7 @@
# include <AvailabilityMacros.h>
#endif

#if defined(_POSIX_PATH_MAX)
# define UV__PATH_MAX _POSIX_PATH_MAX
#elif defined(PATH_MAX)
#if defined(PATH_MAX)
# define UV__PATH_MAX PATH_MAX
#else
# define UV__PATH_MAX 8192
Expand Down

0 comments on commit 0e6e862

Please sign in to comment.