e4c2e97b5eb35b8f9b7b71eb13a4c24e6c1ece22 max Mon Sep 14 09:19:02 2026 -0700 hui, hgTrackUi: encode trackDb setting and cart text in HTML attributes, refs #38123 diff --git src/hg/hgTrackUi/hgTrackUi.c src/hg/hgTrackUi/hgTrackUi.c index 3bce7c78fa0..10e04213782 100644 --- src/hg/hgTrackUi/hgTrackUi.c +++ src/hg/hgTrackUi/hgTrackUi.c @@ -2282,57 +2282,57 @@ void oligoMatchUi(struct trackDb *tdb) /* UI for oligo match track */ { char *oligo = cartUsualString(cart, oligoMatchVar, oligoMatchDefault); char *strand = cartUsualString(cart, oligoMatchStrandVar, oligoMatchStrandDefault); puts("

Short (2-30 base) sequence:"); jsInline( "function packTrack()\n" "{\n" "var box = jQuery('select[name$=oligoMatch]');\n" "if (box.val()=='hide')\n" " box.val('pack');\n" "}\n"); printf("", - oligoMatchVar, oligoMatchVar, 45, oligo); + oligoMatchVar, oligoMatchVar, 45, htmlEncode(oligo)); // cart value, encode it puts("
Examples: TATAWAAR, AAAAA"); jsOnEventById("input", oligoMatchVar, "packTrack();"); puts("

Search strand: "); cgiMakeRadioButton(oligoMatchStrandVar, "both", sameString(strand, "both")); puts(" Both "); cgiMakeRadioButton(oligoMatchStrandVar, "forward", sameString(strand, "forward")); puts(" Forward (+) "); cgiMakeRadioButton(oligoMatchStrandVar, "reverse", sameString(strand, "reverse")); puts(" Reverse (-) "); } static void gcOnFlyUi(struct trackDb *tdb) /* UI for GC on the fly track */ { char *winSize = cartUsualString(cart, gcOnFlyWindowSize, gcOnFlyDefaultSize); puts("

GC Percent calculation window size: "); jsInline( "function fullTrack()\n" "{\n" "var box = jQuery('select[name$=gcOnFly]');\n" "if (box.val()=='hide')\n" " box.val('full');\n" "}\n"); printf("", - gcOnFlyWindowSize, gcOnFlySizeVar, 15, winSize); + gcOnFlyWindowSize, gcOnFlySizeVar, 15, htmlEncode(winSize)); // cart value, encode it jsOnEventById("input", gcOnFlySizeVar, "fullTrack();"); puts("

UCSC standard window size is 5 bases. Adjust size as desired.

"); /* Add standard wiggle graph controls (height, scale, graph type, smoothing, etc.) */ wigCfgUi(cart, tdb, tdb->track, "Graph configuration:", FALSE); printf("

Data Access

\n"); printf("

This track is generated on-the-fly by the browser as needed.\n" "There is no existing data file for this track. To obtain the data for this track\n" "use the following kent command line program hgGcPercent:

\n"); /* Don't free asmName, it is not allocated */ char *asmName = hubConnectSkipHubPrefix(database); boolean genArk = isGenArk(asmName); char twoBitUrl[PATH_LEN]; if (genArk)