projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
lint
[unix-history]
/
usr
/
src
/
sys
/
ufs
/
ffs
/
ufs_lookup.c
diff --git
a/usr/src/sys/ufs/ffs/ufs_lookup.c
b/usr/src/sys/ufs/ffs/ufs_lookup.c
index
244bb4a
..
e959eed
100644
(file)
--- a/
usr/src/sys/ufs/ffs/ufs_lookup.c
+++ b/
usr/src/sys/ufs/ffs/ufs_lookup.c
@@
-1,4
+1,4
@@
-/* ufs_lookup.c 4.1
0 82/02/27
*/
+/* ufs_lookup.c 4.1
3 82/03/13
*/
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/param.h"
#include "../h/systm.h"
@@
-32,7
+32,6
@@
namei(func, flag, follow)
struct inode *pdp;
int i, nlink;
dev_t d;
struct inode *pdp;
int i, nlink;
dev_t d;
- ino_t ino;
off_t eo;
/*
off_t eo;
/*
@@
-41,7
+40,16
@@
namei(func, flag, follow)
nbp = geteblk();
nlink = 0;
for (i=0, cp = nbp->b_un.b_addr; *cp = (*func)(); i++) {
nbp = geteblk();
nlink = 0;
for (i=0, cp = nbp->b_un.b_addr; *cp = (*func)(); i++) {
+ if ((*cp&0377) == ('/'|0200)) {
+ u.u_error = EPERM;
+ break;
+ }
+#ifdef notdef
if (*cp++&0200 && flag==1 || cp >= nbp->b_un.b_addr+BSIZE) {
if (*cp++&0200 && flag==1 || cp >= nbp->b_un.b_addr+BSIZE) {
+#else
+ cp++;
+ if (cp >= nbp->b_un.b_addr+BSIZE) {
+#endif
u.u_error = ENOENT;
break;
}
u.u_error = ENOENT;
break;
}
@@
-76,11
+84,17
@@
dirloop:
u.u_error = ENOTDIR;
(void) access(dp, IEXEC);
for (i=0; *cp!='\0' && *cp!='/'; i++) {
u.u_error = ENOTDIR;
(void) access(dp, IEXEC);
for (i=0; *cp!='\0' && *cp!='/'; i++) {
+#ifdef notdef
if (i >= DIRSIZ) {
u.u_error = ENOENT;
break;
}
u.u_dbuf[i] = *cp++;
if (i >= DIRSIZ) {
u.u_error = ENOENT;
break;
}
u.u_dbuf[i] = *cp++;
+#else
+ if (i < DIRSIZ)
+ u.u_dbuf[i] = *cp;
+ cp++;
+#endif
}
if (u.u_error)
goto out;
}
if (u.u_error)
goto out;
@@
-165,7
+179,6
@@
dirloop:
}
}
d = dp->i_dev;
}
}
d = dp->i_dev;
- ino = dp->i_number;
irele(dp);
pdp = dp;
dp = iget(d, u.u_dent.d_ino);
irele(dp);
pdp = dp;
dp = iget(d, u.u_dent.d_ino);
@@
-187,14
+200,16
@@
dirloop:
iput(pdp);
goto out;
}
iput(pdp);
goto out;
}
- bcopy(ocp, nbp->b_un.b_addr+dp->i_size, cp-ocp);
+ bcopy(ocp, nbp->b_un.b_addr+dp->i_size,
+ (unsigned)(cp-ocp));
bp = bread(dp->i_dev, bmap(dp, (daddr_t)0, B_READ));
if (bp->b_flags & B_ERROR) {
brelse(bp);
iput(pdp);
goto out;
}
bp = bread(dp->i_dev, bmap(dp, (daddr_t)0, B_READ));
if (bp->b_flags & B_ERROR) {
brelse(bp);
iput(pdp);
goto out;
}
- bcopy(bp->b_un.b_addr, nbp->b_un.b_addr, dp->i_size);
+ bcopy(bp->b_un.b_addr, nbp->b_un.b_addr,
+ (unsigned)dp->i_size);
brelse(bp);
cp = nbp->b_un.b_addr;
iput(dp);
brelse(bp);
cp = nbp->b_un.b_addr;
iput(dp);