20ca104b9897669e127e4ec8675321b12f780cff braney Tue Aug 18 11:19:44 2026 -0700 lib, hgTracks: encode JSON object keys and configure/search text, refs #38123 diff --git src/lib/jsonParse.c src/lib/jsonParse.c index 1aca5bc9902..f1da344543d 100644 --- src/lib/jsonParse.c +++ src/lib/jsonParse.c @@ -540,31 +540,35 @@ errAbort("jsonElementRecurse; invalid type: %d", ele->type); break; } } if (endCallback != NULL) endCallback(ele, name, isLast, context); } void jsonPrintOneStart(struct jsonElement *ele, char *name, boolean isLast, int indent, FILE *f) /* Print the start of one json element - just name and maybe an opening brace or bracket. * Recursion is handled elsewhere. */ { spaceOut(f, indent); if (name != NULL) { - fprintf(f, "\"%s\": ", name); + // names are not always literals: an assembly hub's genome name ends up here, so a name + // is encoded the same way a string value is. + char *escaped = jsonStringEscapeLm(name, NULL); + fprintf(f, "\"%s\": ", escaped); + freez(&escaped); } switch (ele->type) { case jsonObject: { fprintf(f, "{\n"); break; } case jsonList: { fprintf(f, "[\n"); break; } case jsonString: {