0325ff9542311af737bd2eadd9b105d863c79574
chmalee
  Tue Sep 22 10:58:54 2026 -0700
Make trackHubSkipHubName not return invalid pointers on bad input names, refs #38414

diff --git src/hg/lib/trackHub.c src/hg/lib/trackHub.c
index a64a5e7d4d2..e3d2f0993f6 100644
--- src/hg/lib/trackHub.c
+++ src/hg/lib/trackHub.c
@@ -1282,31 +1282,34 @@
 
 if (under)
     {
     *under = 0;
     return ret;
     }
 
 return NULL;
 }
 
 char *trackHubSkipHubName(char *name)
 /* Skip the hub_#_ prefix in a hub name. */
 {
 if ((name == NULL) || !startsWith("hub_", name))
     return name;
-return strchr(&name[4], '_') + 1;
+char *ptr = strchr(&name[4], '_');
+if (ptr == NULL)
+    return name;
+return ptr + 1;
 }
 
 struct trackDb *findTdbByBareName(struct trackDb *tdbList, char *bareName)
 /* Recursively search tdbList (and subtracks) for a tdb whose bare track name matches. */
 {
 struct trackDb *tdb;
 for (tdb = tdbList; tdb != NULL; tdb = tdb->next)
     {
     if (sameString(trackHubSkipHubName(tdb->track), bareName))
         return tdb;
     struct trackDb *found = findTdbByBareName(tdb->subtracks, bareName);
     if (found != NULL)
         return found;
     }
 return NULL;