8b7527b0c18aa492ee035bd2e906d1d6ec166343 baertsch Fri Jun 24 19:03:30 2011 -0700 remove itemAdd hardcoding and fix buffer overflow diff --git src/hg/hgc/retroClick.c src/hg/hgc/retroClick.c index 07a9c56..8459396 100644 --- src/hg/hgc/retroClick.c +++ src/hg/hgc/retroClick.c @@ -16,31 +16,31 @@ #include "ucscRetroInfo.h" #include "ucscRetroOrtho.h" #include "genbank.h" #include "hui.h" /* combine blocks separated by gaps less than this number */ #define MAXBLOCKGAP 50 /* space to allocate for a id */ #define ID_BUFSZ 64 struct mappingInfo /* various pieces of information about mapping from table name and * retroXxxInfo table */ { char tblPre[64]; /* table prefix */ - char geneSet[6]; /* source gene set abbrv used in table name */ + char geneSet[12]; /* source gene set abbrv used in table name */ struct ucscRetroInfo *pg; /* general info for retro gene */ boolean indirect; /* an indirect mapping */ char gbAcc[ID_BUFSZ]; /* src accession */ short gbVer; /* version from gbId */ char seqId[ID_BUFSZ]; /* id used to look up sequence, different than * srcAcc if multiple levels of mappings have * been done */ char suffix[ID_BUFSZ]; char *sym; /* src gene symbol and desc */ char *desc; short gbCurVer; /* version from genbank table */ }; static void parseSrcId(struct mappingInfo *mi) /* parse srcId parts and save in mi */ @@ -113,54 +113,54 @@ mi->desc = cloneString(row[2]); } sqlFreeResult(&sr); } static struct mappingInfo *mappingInfoNew(struct sqlConnection *conn, char *tbl, char *mappedId) /* load mapping info for a mapped gene */ { struct mappingInfo *mi; int preLen; char *suffix = containsStringNoCase(tbl,"Info"); int suffixLen = 4; AllocVar(mi); if (startsWith("retroAnc", tbl)) - strcpy(mi->tblPre, "retroAnc"); + safef(mi->tblPre, sizeof(mi->tblPre), "retroAnc"); else if (startsWith("retroOld", tbl)) - strcpy(mi->tblPre, "retroOld"); + safef(mi->tblPre, sizeof(mi->tblPre), "retroOld"); else if (startsWith("retro", tbl)) - strcpy(mi->tblPre, "retro"); + safef(mi->tblPre, sizeof(mi->tblPre), "retro"); else { - strcpy(mi->tblPre, "ucsc"); + safef(mi->tblPre, sizeof(mi->tblPre), "ucsc"); suffix = containsStringNoCase(tbl,"Ali"); suffixLen = 3; } if (suffix != NULL) { suffix +=suffixLen; safef(mi->suffix,ID_BUFSZ,"%s",suffix); } preLen = strlen(mi->tblPre); if (startsWith("retroAugust", tbl)) - strcpy(mi->geneSet, "August"); + safef(mi->geneSet, sizeof(mi->geneSet), "August"); else if (startsWith("retro", tbl)) - strcpy(mi->geneSet, "Mrna"); + safef(mi->geneSet, sizeof(mi->geneSet), "Mrna"); else - strcpy(mi->geneSet, "Retro"); + safef(mi->geneSet, sizeof(mi->geneSet), "Retro"); if (suffix != NULL && strlen(suffix) > 0) mi->pg = sqlQueryObjs(conn, (sqlLoadFunc)ucscRetroInfoLoad, sqlQueryMust|sqlQuerySingle, "select * from %s%sInfo%s where name='%s'", mi->tblPre, mi->geneSet, suffix, mappedId); else { mi->pg = sqlQueryObjs(conn, (sqlLoadFunc)ucscRetroInfoLoad, sqlQueryMust|sqlQuerySingle, "select * from %s%sInfo where name='%s'", mi->tblPre, mi->geneSet, mappedId); } parseSrcId(mi); getGenbankInfo(conn, mi); return mi; }