memory-allocation-fixes-20030813
authorNickolai Zeldovich <kolya@mit.edu>
Thu, 14 Aug 2003 04:55:55 +0000 (04:55 +0000)
committerNickolai Zeldovich <kolya@mit.edu>
Thu, 14 Aug 2003 04:55:55 +0000 (04:55 +0000)
Properly free allocated memory from osi_AllocLargeSpace and
check the amount of memory requested from osi_AllocSmallSpace
to avoid a possible panic.

src/afs/VNOPS/afs_vnop_lookup.c

index 5fff99e..b794f9d 100644 (file)
@@ -148,8 +148,8 @@ EvalMountPoint(register struct vcache *avc, struct vcache *advc,
      * doesn't exist? Try adding ".readonly" to volname and look for that.
      * Don't know why we do this. Would have still found it in above call - jpm.
      */
-    if (!tvp && (prefetch == 2)) {
-       buf = (char *)osi_AllocSmallSpace(strlen(volnamep) + 10);
+    if (!tvp && (prefetch == 2) && len < AFS_SMALLOCSIZ - 10) {
+       buf = (char *)osi_AllocSmallSpace(len + 10);
 
        strcpy(buf, volnamep);
        afs_strcat(buf, ".readonly");
@@ -1291,6 +1291,8 @@ OSI_VC_DECL(adp);
            ReleaseReadLock(&tdc->lock);
            ReleaseReadLock(&adp->lock);
            afs_PutDCache(tdc);
+           if (tname && tname != aname)
+               osi_FreeLargeSpace(tname);
            goto redo;
        }