Verify that afs_GetCellByIndex() returns a valid cell -- it might
authorNickolai Zeldovich <kolya@mit.edu>
Fri, 26 Jul 2002 21:27:55 +0000 (21:27 +0000)
committerNickolai Zeldovich <kolya@mit.edu>
Fri, 26 Jul 2002 21:27:55 +0000 (21:27 +0000)
be NULL if afs_NewCell() aborted partway through, which could be
the case of the CellServDB file has a typo.

src/afs/afs_dynroot.c

index 64096a8..b90d968 100644 (file)
@@ -299,13 +299,14 @@ afs_RefreshDynroot()
 
     for (cellidx = 0; cellidx < maxcellidx; cellidx++) {
        c = afs_GetCellByIndex(cellidx, READ_LOCK, 0 /* don't refresh */);
-       afs_dynroot_addDirEnt(dirHeader, &curPage, &curChunk,
-                             c->cellName, VNUM_FROM_CIDX_RW(cellidx, 0));
+       if (!c) continue;
 
        dotCell = afs_osi_Alloc(strlen(c->cellName) + 2);
        strcpy(dotCell, ".");
        strcat(dotCell, c->cellName);
        afs_dynroot_addDirEnt(dirHeader, &curPage, &curChunk,
+                             c->cellName, VNUM_FROM_CIDX_RW(cellidx, 0));
+       afs_dynroot_addDirEnt(dirHeader, &curPage, &curChunk,
                              dotCell, VNUM_FROM_CIDX_RW(cellidx, 1));
 
        if (!(c->states & CAlias)) linkCount += 2;