080a160c7b9595d516c9c70e83689a09b60839d0
galt
  Mon Jun 3 12:16:53 2013 -0700
fix SQL Injection
diff --git src/hg/hgc/expClick.c src/hg/hgc/expClick.c
index 6b38f73..5756422 100644
--- src/hg/hgc/expClick.c
+++ src/hg/hgc/expClick.c
@@ -232,51 +232,51 @@
     }
 sqlFreeResult(&sr);
 hFreeConn(&conn);
 slReverse(&bedList);
 return bedList;
 }
 
 static struct bed * loadMsBedAll(char *table)
 /* load every thing from a bed 15 table */
 {
 struct sqlConnection *conn = hAllocConn(database);
 struct sqlResult *sr;
 char **row;
 struct bed *bedList = NULL, *bed;
 char query[512];
-sprintf(query, "select * from %s", table);
+sqlSafef(query, sizeof query, "select * from %s", table);
 sr = sqlGetResult(conn, query);
 while ((row = sqlNextRow(sr)) != NULL)
     {
     bed = bedLoadN(row, 15);
     slAddHead(&bedList, bed);
     }
 sqlFreeResult(&sr);
 hFreeConn(&conn);
 slReverse(&bedList);
 return bedList;
 }
 
 static struct expRecord * loadExpRecord(char *table, char *database)
 /* load everything from an expRecord table in the
    specified database, usually hgFixed instead of hg7, hg8, etc. */
 {
 struct sqlConnection *conn = sqlConnect(database);
 char query[256];
 struct expRecord *erList = NULL;
-snprintf(query, sizeof(query), "select * from %s", table);
+sqlSafef(query, sizeof(query), "select * from %s", table);
 erList = expRecordLoadByQuery(conn, query);
 sqlDisconnect(&conn);
 return erList;
 }
 
 void getMsBedExpDetails(struct trackDb *tdb, char *expName, boolean all)
 /* Create tab-delimited output to download */
 {
 char *expTable = cartString(cart, "i");
 char *bedTable = cartString(cart, "o");
 struct expRecord *er, *erList=NULL;
 struct bed *b, *bedList=NULL;
 int i;
 
 /* Get all of the expression record details */