080a160c7b9595d516c9c70e83689a09b60839d0
galt
  Mon Jun 3 12:16:53 2013 -0700
fix SQL Injection
diff --git src/hg/sageVisCGI/sageVisCGI.c src/hg/sageVisCGI/sageVisCGI.c
index 52821fb..2d328a2 100644
--- src/hg/sageVisCGI/sageVisCGI.c
+++ src/hg/sageVisCGI/sageVisCGI.c
@@ -180,77 +180,75 @@
 /** load the sage data by constructing a query based on the names in nmList
  */
 struct sage *loadSageData(char *table, struct slName *nmList)
 {
 char *user = cfgOption("db.user");
 char *password = cfgOption("db.password");
 struct sqlConnection *sc = NULL;
 struct dyString *query = newDyString(2048);
 struct sage *sgList = NULL, *sg=NULL;
 struct slName *nm =NULL;
 char *db = cgiUsualString("db", "hgFixed");
 char **row;
 int count=0;
 struct sqlResult *sr = NULL;
 sc = sqlConnectRemote("localhost", user, password, db);
-dyStringPrintf(query, "%s", "select * from sage where ");
+sqlDyStringPrintf(query, "select * from sage where ");
 for(nm=nmList;nm!=NULL;nm=nm->next)
     {
     if (count++)
         {
-        dyStringPrintf(query," or uni=%s ", nm->name );
+        sqlDyStringPrintf(query," or uni=%s ", nm->name );
         }
     else
 	{
-	dyStringPrintf(query," uni=%s ", nm->name);
+	sqlDyStringPrintf(query," uni=%s ", nm->name);
 	}
     }
 sr = sqlGetResult(sc,query->string);
 while((row = sqlNextRow(sr)) != NULL)
     {
     sg = sageLoad(row);
     slAddHead(&sgList,sg);
     }
 sqlFreeResult(&sr);
 sqlDisconnect(&sc);
 slReverse(&sgList);
 freeDyString(&query);
 return sgList;
 }
 
 /** load the sage experiment data
  */
 struct sageExp *loadSageExps(char *tableName, struct slName *nmList)
 {
 char *user = cfgOption("db.user");
 char *password = cfgOption("db.password");
 struct sqlConnection *sc = NULL;
 char query[256];
 struct sageExp *seList = NULL, *se=NULL;
 char **row;
 struct sqlResult *sr = NULL;
 char *db = cgiUsualString("db", "hgFixed");
-char *tmp= cloneString("select * from sageExp order by num");
 sc = sqlConnectRemote("localhost", user, password, db);
-sprintf(query,"%s",tmp);
+sqlSafef(query, sizeof query, "select * from sageExp order by num");
 sr = sqlGetResult(sc,query);
 while((row = sqlNextRow(sr)) != NULL)
     {
     se = sageExpLoad(row);
     slAddHead(&seList,se);
     }
-freez(&tmp);
 sqlFreeResult(&sr);
 sqlDisconnect(&sc);
 slReverse(&seList);
 return seList;
 }
 
 /** print usage and quit */
 void usage()
 {
 errAbort("sageVisCGI - create a graph of median sage counts\n"
 	 "usage:\n\t sageVisCGI u=<uniGeneNum> u=<uniGeneNum2> u=<uniGeneNum3> etc. \n");
 }
 
 /** main html generating function for htmShell */
 void doHtml()