From 27609fe288eb20f30e1f17a709a07468a74372eb Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Fri, 27 Mar 2009 17:58:02 +0000 Subject: [PATCH] windows-afsd-symlink-20090327 LICENSE MIT Increase max symlink limit to 64 and remove the repeated fid recursion test. Breaks too many things. --- src/WINNT/afsd/cm_vnodeops.c | 18 +++++++----------- src/WINNT/afsd/cm_vnodeops.h | 2 +- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/WINNT/afsd/cm_vnodeops.c b/src/WINNT/afsd/cm_vnodeops.c index 04ddb091f..480396b90 100644 --- a/src/WINNT/afsd/cm_vnodeops.c +++ b/src/WINNT/afsd/cm_vnodeops.c @@ -1932,17 +1932,13 @@ long cm_NameI(cm_scache_t *rootSCachep, clientchar_t *pathp, long flags, fid_count = i+1; } else { /* add the new fid to the list */ - for ( i=0; ifid, &fids[i]) ) { - code = CM_ERROR_TOO_MANY_SYMLINKS; - cm_ReleaseSCache(nscp); - nscp = NULL; - break; - } - } - if (i == fid_count && fid_count < MAX_FID_COUNT) { - fids[fid_count++] = nscp->fid; - } + if (fid_count == MAX_FID_COUNT) { + code = CM_ERROR_TOO_MANY_SYMLINKS; + cm_ReleaseSCache(nscp); + nscp = NULL; + break; + } + fids[fid_count++] = nscp->fid; } } diff --git a/src/WINNT/afsd/cm_vnodeops.h b/src/WINNT/afsd/cm_vnodeops.h index 985a1fb32..0c3a8a402 100644 --- a/src/WINNT/afsd/cm_vnodeops.h +++ b/src/WINNT/afsd/cm_vnodeops.h @@ -237,7 +237,7 @@ extern cm_key_t cm_GenerateKey(afs_uint16 session_id, afs_offs_t process_id, afs extern int cm_KeyEquals(cm_key_t * k1, cm_key_t * k2, int flags); -#define MAX_SYMLINK_COUNT 16 +#define MAX_SYMLINK_COUNT 64 /* make this big enough so that one buffer of dir pages won't overflow. We'll * check anyway, but we want to minimize the chance that we have to leave stuff -- 2.39.5