0194df3ad18b73a17bc652065e8ef9fcfaaa3188
braney
  Mon Jun 14 11:51:58 2021 -0700
fix crash in hTrackDb() when database doesn't exist or has no trackDb

diff --git src/hg/lib/hdb.c src/hg/lib/hdb.c
index 09be762..5840dbd 100644
--- src/hg/lib/hdb.c
+++ src/hg/lib/hdb.c
@@ -4251,38 +4251,38 @@
             return cacheTdb;
             }
 
         memCheckPoint(); // we want to know how much memory is used to build the tdbList
         }
     }
 
 tdbList = loadTrackDb(db, NULL);
 tdbList = trackDbLinkUpGenerations(tdbList);
 tdbList = trackDbPolishAfterLinkup(tdbList, db);
 
 if (doCache)
     trackDbCloneTdbListToSharedMem(db, tdbPathString, tdbList, memCheckPoint());
 
 // Store negative cartVersion in priority field so that cartVersion "track" is first in tdbList
-if (sameString(tdbList->track, "cartVersion"))
+if ((tdbList != NULL) && sameString(tdbList->track, "cartVersion"))
     {
     if (retCartVersion)
         *retCartVersion = -tdbList->priority;
     tdbList = tdbList->next;
     }
 
-return tdbList->next;
+return tdbList;
 }
 
 struct trackDb *hTrackDb(char *db)
 /* see hTrackDbWithCartVersion above. */
 {
 return hTrackDbWithCartVersion(db, NULL);
 }
 
 static struct trackDb *loadAndLookupTrackDb(struct sqlConnection *conn,
 					    char *where)
 /* Load trackDb object(s). Nothing done for composite tracks here. */
 {
 return loadTrackDb(sqlGetDatabase(conn), where);
 }