f043c937a34269023b71d7a89b7ff25103e6c125 angie Mon Feb 24 15:35:59 2020 -0800 Check user custom track group setting instead of allowing any string. Don't silently drop warnings. refs #25003, #25016 diff --git src/hg/hgCustom/hgCustom.c src/hg/hgCustom/hgCustom.c index b77eeac..392c530 100644 --- src/hg/hgCustom/hgCustom.c +++ src/hg/hgCustom/hgCustom.c @@ -1270,66 +1270,67 @@ if (isNotEmpty(fileContents)) { /* already handled file */ cartRemove(cart, hgCtDataFile); cartRemove(cart, hgCtDataFileName); } } struct errCatch *catch = errCatchNew(); if (errCatchStart(catch)) ctList = customTracksParseCartDetailed(database, cart, &browserLines, &ctFileName, &replacedCts, NULL, &err); errCatchEnd(catch); if (catch->gotError) { addWarning(dsWarn, err); - addWarning(dsWarn, catch->message->string); } + if (isNotEmpty(catch->message->string)) + addWarning(dsWarn, catch->message->string); errCatchFree(&catch); /* exclude special setting used by table browser to indicate * db assembly for error-handling purposes only */ char *db = NULL; if (trackConfig && (db = stringIn("db=", trackConfig)) != NULL) { db += 3; char *nextTok = skipToSpaces(db); if (!nextTok) nextTok = strchr(db, 0); db = cloneStringZ(db,nextTok-db); if (!sameString(db,database)) - err = "Invalid configuration found - remove db= or return it to it's original value"; + err = "Invalid configuration found - remove db= or return it to its original value. "; } if (cartVarExists(cart, hgCtUpdatedTrack) && !hasData) { /* update custom track config and doc, but not data*/ selectedTable = cartOptionalString(cart, hgCtUpdatedTable); if (selectedTable) { ct = ctFromList(ctList, selectedTable); if (ct) { struct errCatch *catch = errCatchNew(); if (errCatchStart(catch)) { customTrackUpdateFromConfig(ct, database, trackConfig, &browserLines); ctUpdated = TRUE; } errCatchEnd(catch); - if (catch->gotError) - addWarning(dsWarn, catch->message->string); + if (isNotEmpty(catch->message->string)) + err = catTwoStrings(emptyForNull(err), catch->message->string); errCatchFree(&catch); } } } addWarning(dsWarn, replacedTracksMsg(replacedCts)); doBrowserLines(browserLines, &warnMsg); addWarning(dsWarn, warnMsg); if (err) { char *selectedTable = NULL; cartSetString(cart, hgCtDataText, savedCustomText); cartSetString(cart, hgCtConfigLines, savedConfig); if ((selectedTable= cartOptionalString(cart, hgCtUpdatedTable)) != NULL) {