Submitted by: Conrad Minshall <conrad@apple.com>
Reviewed by: Matthew Dillon <dillon@apollo.backplane.com> The following ugly hack to the exit path of nfs_readlinkrpc() circumvents an Auspex bug: for symlinks longer than 112 (0x70) they return a 1024 byte xdr string - the correct data with many nulls appended. Without this fix namei returns ENAMETOOLONG, at least it does on our source base and on FreeBSD 3.0. Note we do not (and should not) rely upon their null padding.
This commit is contained in:
parent
3e478b3901
commit
c1f020038b
@ -34,7 +34,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)nfs_vnops.c 8.16 (Berkeley) 5/27/95
|
||||
* $Id: nfs_vnops.c,v 1.132 1999/06/26 02:46:32 mckusick Exp $
|
||||
* $Id: nfs_vnops.c,v 1.133 1999/06/28 12:34:40 peter Exp $
|
||||
*/
|
||||
|
||||
|
||||
@ -1009,6 +1009,11 @@ nfs_readlinkrpc(vp, uiop, cred)
|
||||
nfsm_postop_attr(vp, attrflag);
|
||||
if (!error) {
|
||||
nfsm_strsiz(len, NFS_MAXPATHLEN);
|
||||
if (len == NFS_MAXPATHLEN) {
|
||||
struct nfsnode *np = VTONFS(vp);
|
||||
if (np->n_size && np->n_size < NFS_MAXPATHLEN)
|
||||
len = np->n_size;
|
||||
}
|
||||
nfsm_mtouio(uiop, len);
|
||||
}
|
||||
nfsm_reqdone;
|
||||
|
@ -34,7 +34,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)nfs_vnops.c 8.16 (Berkeley) 5/27/95
|
||||
* $Id: nfs_vnops.c,v 1.132 1999/06/26 02:46:32 mckusick Exp $
|
||||
* $Id: nfs_vnops.c,v 1.133 1999/06/28 12:34:40 peter Exp $
|
||||
*/
|
||||
|
||||
|
||||
@ -1009,6 +1009,11 @@ nfs_readlinkrpc(vp, uiop, cred)
|
||||
nfsm_postop_attr(vp, attrflag);
|
||||
if (!error) {
|
||||
nfsm_strsiz(len, NFS_MAXPATHLEN);
|
||||
if (len == NFS_MAXPATHLEN) {
|
||||
struct nfsnode *np = VTONFS(vp);
|
||||
if (np->n_size && np->n_size < NFS_MAXPATHLEN)
|
||||
len = np->n_size;
|
||||
}
|
||||
nfsm_mtouio(uiop, len);
|
||||
}
|
||||
nfsm_reqdone;
|
||||
|
Loading…
Reference in New Issue
Block a user