Don't allow empty pathnames. POSIX standard.

Most of the standard utilities that depended on (or were broken in
a different way by) the old behaviour of interpreting "" as "."
were fixed a year or two ago.  There is still a fairly harmless
bug in tar and a harmless bug in gzip.  Tar apparently replaces
"/" by "" when it strips leading slashes.
This commit is contained in:
bde 1996-12-01 16:05:44 +00:00
parent 500bdd5eba
commit d191cf1fc3

View File

@ -36,7 +36,7 @@
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* @(#)vfs_lookup.c 8.4 (Berkeley) 2/16/94 * @(#)vfs_lookup.c 8.4 (Berkeley) 2/16/94
* $Id: vfs_lookup.c,v 1.10 1995/10/22 09:32:25 davidg Exp $ * $Id: vfs_lookup.c,v 1.11 1996/01/03 21:42:22 wollman Exp $
*/ */
#include "opt_ktrace.h" #include "opt_ktrace.h"
@ -112,6 +112,13 @@ namei(ndp)
else else
error = copyinstr(ndp->ni_dirp, cnp->cn_pnbuf, error = copyinstr(ndp->ni_dirp, cnp->cn_pnbuf,
MAXPATHLEN, (u_int *)&ndp->ni_pathlen); MAXPATHLEN, (u_int *)&ndp->ni_pathlen);
/*
* Don't allow empty pathnames.
*/
if (!error && *cnp->cn_pnbuf == '\0')
error = ENOENT;
if (error) { if (error) {
free(cnp->cn_pnbuf, M_NAMEI); free(cnp->cn_pnbuf, M_NAMEI);
ndp->ni_vp = NULL; ndp->ni_vp = NULL;