080a160c7b9595d516c9c70e83689a09b60839d0 galt Mon Jun 3 12:16:53 2013 -0700 fix SQL Injection diff --git src/hg/lib/ccdsGeneMap.c src/hg/lib/ccdsGeneMap.c index 54d985d..606f2f4 100644 --- src/hg/lib/ccdsGeneMap.c +++ src/hg/lib/ccdsGeneMap.c @@ -149,69 +149,69 @@ "CREATE TABLE %s (" " ccdsId varchar(32) not null," " geneId varchar(255) not null," " chrom varchar(255) not null," " chromStart int unsigned not null," " chromEnd int unsigned not null," " cdsSimilarity float not null," " KEY(ccdsId)," " KEY(geneId)" ")"; char *ccdsGeneMapGetCreateSql(char *table) /* Get SQL command to create ccdsGeneMap table. Result should be freed. */ { char sql[1024]; -safef(sql, sizeof(sql), createSql, table); +sqlSafef(sql, sizeof(sql), createSql, table); return cloneString(sql); } struct ccdsGeneMap *ccdsGeneMapSelectByCcds(struct sqlConnection *conn, char *mapTable, char *ccdsId, char *chrom, float minSimilarity) /* select ccdsGeneMap records by ccds and minimum CDS similarity from the * specified table. Chrom is required since the same CCDS id is mapped twice in the PAR. */ { struct ccdsGeneMap *ccdsGeneList = NULL; char query[128]; struct sqlResult *sr = NULL; char **row = NULL; -safef(query, sizeof(query), "select * from %s where (ccdsId='%s') and (chrom='%s') and (cdsSimilarity >= %f)", +sqlSafef(query, sizeof(query), "select * from %s where (ccdsId='%s') and (chrom='%s') and (cdsSimilarity >= %f)", mapTable, ccdsId, chrom, minSimilarity); sr = sqlGetResult(conn, query); while ((row = sqlNextRow(sr)) != NULL) slSafeAddHead(&ccdsGeneList, ccdsGeneMapLoad(row)); sqlFreeResult(&sr); return ccdsGeneList; } struct ccdsGeneMap *ccdsGeneMapSelectByGene(struct sqlConnection *conn, char *mapTable, char *geneId, float minSimilarity) /* select ccdsGeneMap records by gene id and minimum CDS similarity from the * specified table. */ { struct ccdsGeneMap *ccdsGeneList = NULL; char query[128], simExpr[64]; struct sqlResult *sr = NULL; char **row = NULL; simExpr[0] = '\0'; if (minSimilarity > 0.0) safef(simExpr, sizeof(simExpr), "and cdsSimilarity >= %f", minSimilarity); -safef(query, sizeof(query), "select * from %s where geneId='%s' %s", +sqlSafef(query, sizeof(query), "select * from %s where geneId='%s' %s", mapTable, geneId, simExpr); sr = sqlGetResult(conn, query); while ((row = sqlNextRow(sr)) != NULL) slSafeAddHead(&ccdsGeneList, ccdsGeneMapLoad(row)); sqlFreeResult(&sr); return ccdsGeneList; } struct ccdsGeneMap *ccdsGeneMapSelectByGeneOver(struct sqlConnection *conn, char *mapTable, char *geneId, char *chrom, unsigned chromStart, unsigned chromEnd, float minSimilarity) /* select ccdsGeneMap records by gene id, location overlap, and minimum CDS * similarity from the specified table. */ { struct ccdsGeneMap *ccdsGeneList = ccdsGeneMapSelectByGene(conn, mapTable, geneId, minSimilarity);