080a160c7b9595d516c9c70e83689a09b60839d0 galt Mon Jun 3 12:16:53 2013 -0700 fix SQL Injection diff --git src/hg/hgGene/flyBaseInfo.c src/hg/hgGene/flyBaseInfo.c index 8752c7e..df9a456 100644 --- src/hg/hgGene/flyBaseInfo.c +++ src/hg/hgGene/flyBaseInfo.c @@ -15,60 +15,60 @@ /* Return true if organism is D. melanogaster. */ { return(sameWord(hOrganism(database), "D. melanogaster")); } char *getFlyBaseId(struct sqlConnection *conn, char *geneId) /* Return flyBase ID of gene if any. */ { if (sqlTableExists(conn, "bdgpGeneInfo")) { char query[256]; char *cutId = cloneString(geneId); char *e = strchr(cutId, '-'); if (e != NULL) *e = 0; - safef(query, sizeof(query), + sqlSafef(query, sizeof(query), "select flyBaseId from bdgpGeneInfo where bdgpName = '%s'", cutId); freeMem(cutId); return sqlQuickString(conn, query); } else if (sqlTableExists(conn, "flyBase2004Xref")) { char query[256]; - safef(query, sizeof(query), + sqlSafef(query, sizeof(query), "select fbgn from flyBase2004Xref where name = '%s'", geneId); return sqlQuickString(conn, query); } return NULL; } static boolean flyBaseInfoExists(struct section *section, struct sqlConnection *conn, char *geneId) /* Return TRUE if flyBase info tables exist. */ { char *flyBaseId = getFlyBaseId(conn, geneId); char query[256]; int roleCount; if (flyBaseId == NULL) return FALSE; if (!sqlTableExists(conn, section->flyBaseTable) ) return FALSE; if (!sqlTablesExist(conn, "fbAllele fbGene fbRef") ) return FALSE; -safef(query, sizeof(query), "select count(*) from %s where geneId = '%s'", +sqlSafef(query, sizeof(query), "select count(*) from %s where geneId = '%s'", section->flyBaseTable, flyBaseId); roleCount = sqlQuickNum(conn, query); freeMem(flyBaseId); return roleCount != 0; } struct fbAlleleInfo /* Info on allele */ { struct fbAlleleInfo *next; int id; struct fbRole *roleList; }; static int fbAlleleInfoCmp(const void *va, const void *vb) @@ -119,74 +119,74 @@ hPrintf(""); } else hPrintf("%c", c); } if (italic) /* Just in case turn off. */ hPrintf(""); } static void printCite(struct sqlConnection *conn, int id) /* Print out reference info. */ { char query[256]; char *refText; -safef(query, sizeof(query), "select text from fbRef where id=%d", id); +sqlSafef(query, sizeof(query), "select text from fbRef where id=%d", id); refText = sqlQuickString(conn, query); if (refText != NULL) { char *s = refText; if (startsWith("FBrf", refText)) { char *e = stringIn("==", s); if (e != NULL) s = e + 3; } hPrintf(" (%s)", s); freeMem(refText); } } static void flyBaseInfoPrint(struct section *section, struct sqlConnection *conn, char *geneId) /* Print out FlyBase info. */ { char *flyBaseId = getFlyBaseId(conn, geneId); char query[256], **row; struct sqlResult *sr; struct fbAlleleInfo *alleleList = NULL, *allele; struct hash *alleleHash = newHash(10); struct fbRole *role = NULL; -safef(query, sizeof(query), +sqlSafef(query, sizeof(query), "select * from %s where geneId='%s'", section->flyBaseTable, flyBaseId); sr = sqlGetResult(conn, query); while ((row = sqlNextRow(sr)) != NULL) { role = fbRoleLoad(row); addToAllele(alleleHash, &alleleList, role->fbAllele, role); } sqlFreeResult(&sr); slSort(&alleleList, fbAlleleInfoCmp); for (allele = alleleList; allele != NULL; allele = allele->next) { char *alleleName = NULL; if (allele->id != 0) { - safef(query, sizeof(query), + sqlSafef(query, sizeof(query), "select name from fbAllele where id=%d", allele->id); alleleName = sqlQuickString(conn, query); if (alleleName != NULL) hPrintf("Allele %s:
\n", alleleName); } if (allele->roleList != NULL) { hPrintf("