PERFORCE change 98267 for review
Christian S.J. Peron
csjp at FreeBSD.org
Thu Jun 1 08:34:22 PDT 2006
http://perforce.freebsd.org/chv.cgi?CH=98267
Change 98267 by csjp at csjp_xor on 2006/06/01 15:32:20
Check to see if the rootdir is the same as the current working directory.
If it is, and the pathname was relative, do not separate the componenets
with a '/' character.
Affected files ...
.. //depot/projects/trustedbsd/audit3/sys/security/audit/audit_bsm_klib.c#9 edit
Differences ...
==== //depot/projects/trustedbsd/audit3/sys/security/audit/audit_bsm_klib.c#9 (text+ko) ====
@@ -487,10 +487,11 @@
char *retbuf, *freebuf;
struct vnode *vnp;
struct filedesc *fdp;
- int error, vfslocked;
+ int cisr, error, vfslocked;
fdp = td->td_proc->p_fd;
bufp = path;
+ cisr = 0;
FILEDESC_LOCK(fdp);
if (*(path) == '/') {
while (*(bufp) == '/')
@@ -509,6 +510,7 @@
}
} else {
vnp = fdp->fd_cdir; /* Prepend the current dir. */
+ cisr = (fdp->fd_rdir == fdp->fd_cdir);
vref(vnp);
bufp = path;
}
@@ -525,8 +527,14 @@
vn_lock(vnp, LK_EXCLUSIVE | LK_RETRY, td);
error = vn_fullpath(td, vnp, &retbuf, &freebuf);
if (error == 0) {
- /* Copy and free buffer allocated by vn_fullpath(). */
- snprintf(cpath, MAXPATHLEN, "%s/%s", retbuf, bufp);
+ /* Copy and free buffer allocated by vn_fullpath().
+ * If the current working directory was the same as
+ * the root directory, and the path was a relative
+ * pathname, do not separate the two components with
+ * the '/' character.
+ */
+ snprintf(cpath, MAXPATHLEN, "%s%s%s", retbuf,
+ cisr ? "" : "/", bufp);
free(freebuf, M_TEMP);
} else
cpath[0] = '\0';
More information about the trustedbsd-cvs
mailing list