3c336b221ead841fd5504ce0652874f5901e979c jcasper Thu Mar 10 20:12:17 2022 -0800 Fixing a couple of injection vulnerabilities, refs #29086 diff --git src/hg/hgPublicSessions/hgPublicSessions.c src/hg/hgPublicSessions/hgPublicSessions.c index c93917d..9565939 100644 --- src/hg/hgPublicSessions/hgPublicSessions.c +++ src/hg/hgPublicSessions/hgPublicSessions.c @@ -209,57 +209,58 @@ jsOnEventById("change", "sortMethod", "changeSort();"); printf ("\n" " " " " " \n" " \n" " \n" " \n" " \n" " \n"); printf ("\n"); while (thisSession != NULL) { - char *settingString = NULL; + char *descriptionString = NULL; printf ("\t\n"); if (isNotEmpty(thisSession->imgUri)) { printf ("\t\t\n", thisSession->imgUri); } else { printf ("\t\t\n", dyStringContents(thisSession->sessionUrl)); } struct hash *settingsHash = raFromString(thisSession->settings); - settingString = (char*) hashFindVal(settingsHash, "description"); - if (settingString == NULL) - settingString = ""; + descriptionString = (char*) hashFindVal(settingsHash, "description"); + if (descriptionString == NULL) + descriptionString = ""; else { - settingString = replaceChars(settingString, "\\\\", "\\__ESC__"); - settingString = replaceChars(settingString, "\\r", "\r"); - settingString = replaceChars(settingString, "\\n", "\n"); - settingString = replaceChars(settingString, "\\__ESC__", "\\"); + descriptionString = replaceChars(descriptionString, "\\\\", "\\__ESC__"); + descriptionString = replaceChars(descriptionString, "\\r", "\r"); + descriptionString = replaceChars(descriptionString, "\\n", "\n"); + descriptionString = replaceChars(descriptionString, "\\__ESC__", "\\"); } - printf ("\t\t\n"); struct tm creationDate; ZeroVar(&creationDate); strptime(thisSession->firstUse, "%Y-%m-%d %T", &creationDate); /* Hidden columns */ printf ("\t\t\n", mktime(&creationDate)); printf ("\t\t\n", thisSession->useCount); printf ("\t\n"); thisSession = thisSession->next; }
ScreenshotSession PropertiesCreation DateUse Count
", dyStringContents(thisSession->sessionUrl)); printf ("
Screenshot not available
\n"); printf ("\t\tClick Here to view
Description: %s
\n", settingString); + char *safeDescription = htmlEncode(descriptionString); + printf ("\t\t
Description: %s
\n", safeDescription); printf ("\t\tAuthor: %s
\n", thisSession->userName); printf ("\t\tSession Name: %s
\n", thisSession->sessionName); printf ("\t\tGenome Assembly: %s
\n", thisSession->db); printf ("\t\tCreation Date: %s
\n", thisSession->firstUse); printf ("\t\tViews: %ld\n", thisSession->useCount); printf ("\t\t
%ld%ld