25284ab19efd690d46b5de7e83f089e4680422f0 jcasper Mon Oct 12 16:37:12 2015 -0700 Adding check to ensure we don't write off the end of the string (and into other memory) diff --git src/hg/xmlToSql/xmlToSql.c src/hg/xmlToSql/xmlToSql.c index fa7e3e8..d9eaecf 100644 --- src/hg/xmlToSql/xmlToSql.c +++ src/hg/xmlToSql/xmlToSql.c @@ -213,30 +213,31 @@ AllocVar(ref); ref->field = field; slAddHead(&table->parentKeys, ref); } else { /* Need to handle association here. */ struct table *assocTable; struct assocRef *ref; char joinedName[256]; char *assocTableName; int upperAt; safef(joinedName, sizeof(joinedName), "%sTo%s", parentTable->name, table->name); upperAt = strlen(parentTable->name) + 2; + if (upperAt < strlen(joinedName)) joinedName[upperAt] = toupper(joinedName[upperAt]); assocTableName = renameUnique(tableHash, joinedName); assocTable = tableNew(assocTableName, NULL, NULL); assocTable->isAssoc = TRUE; addFieldToTable(assocTable, parentTable->name, parentTable->name, parentTable->primaryKey->attStat, TRUE, TRUE, parentTable->primaryKey->isString, textField); addFieldToTable(assocTable, table->name, table->name, table->primaryKey->attStat, TRUE, TRUE, table->primaryKey->isString, textField); slAddHead(pTableList, assocTable); AllocVar(ref); ref->assoc = assocTable; ref->parent = parentTable; slAddHead(&table->parentAssocs, ref);