Apply by doing:
cd /usr/src
patch -p0 < 001_realpath.patch
And then rebuild and install libc:
cd lib/libc
make obj cleandir depend
make && make install
Note that programs that are linked statically will not pick up the
change unless they are rebuilt. This includes the contents of /bin
and /sbin. The following static binaries use realpath(3):
/bin/mv, /bin/systrace, /sbin/mount, /sbin/mount_*,
/sbin/mountd, /sbin/umount
Of those, the most important to rebuild is /sbin/mountd.
Index: lib/libc/stdlib/realpath.c
===================================================================
RCS file: /cvs/src/lib/libc/stdlib/realpath.c,v
retrieving revision 1.7
retrieving revision 1.7.4.1
diff -u -r1.7 -r1.7.4.1
--- lib/libc/stdlib/realpath.c 24 May 2002 21:22:37 -0000 1.7
+++ lib/libc/stdlib/realpath.c 3 Aug 2003 02:17:03 -0000 1.7.4.1
@@ -60,7 +60,7 @@
char *resolved;
{
struct stat sb;
- int fd, n, rootd, serrno;
+ int fd, n, needslash, serrno;
char *p, *q, wbuf[MAXPATHLEN];
int symlinks = 0;
@@ -134,18 +134,18 @@
* happens if the last component is empty, or the dirname is root.
*/
if (resolved[0] == '/' && resolved[1] == '\0')
- rootd = 1;
+ needslash = 0;
else
- rootd = 0;
+ needslash = 1;