282c37a5f6db8b7704e1d0f3617f55f38b8aea70 hiram Fri Apr 19 15:27:08 2019 -0700 more error testing for illegal inputs refs #18869 diff --git src/hg/hubApi/getData.c src/hg/hubApi/getData.c index 10e9cec..ad7adab 100644 --- src/hg/hubApi/getData.c +++ src/hg/hubApi/getData.c @@ -651,30 +651,33 @@ if (NULL == thisTrack) apiErrAbort(err400, err400Msg, "can not find track=%s name for endpoint '/getData/track", track); /* might be a big* track with no table */ char *bigDataUrl = trackDbSetting(thisTrack, "bigDataUrl"); boolean tableTrack = TRUE; /* might have a specific table defined instead of the track name */ char *tableName = trackDbSetting(thisTrack, "table"); if (isNotEmpty(tableName)) { freeMem(sqlTable); sqlTable = cloneString(tableName); } +/* database existence has already been checked before now, might + * have disappeared in the mean time + */ struct sqlConnection *conn = hAllocConnMaybe(db); if (NULL == conn) apiErrAbort(err400, err400Msg, "can not find database 'db=%s' for endpoint '/getData/track", db); struct hTableInfo *hti = hFindTableInfoWithConn(conn, NULL, sqlTable); char *splitSqlTable = NULL; if (hti && hti->isSplit) { if (isNotEmpty(chrom)) { char fullTableName[256]; safef(fullTableName, sizeof(fullTableName), "%s_%s", chrom, hti->rootName); splitSqlTable = cloneString(fullTableName); @@ -941,21 +944,22 @@ { if (isNotEmpty(hubUrl)) getHubTrackData(hubUrl); else getTrackData(); } else if (sameWord("sequence", words[1])) { if (isNotEmpty(hubUrl)) getHubSequenceData(hubUrl); else { char *db = cgiOptionalString("db"); if (isEmpty(db)) apiErrAbort(err400, err400Msg, "missing URL db=<ucscDb> name for endpoint '/getData/sequence"); + /* existence of db has already been proven before getting here */ getSequenceData(db, NULL); } } else apiErrAbort(err400, err400Msg, "do not recognize endpoint function: '/%s/%s'", words[0], words[1]); }