9b1292002a4ede647cfea3d0a357c184d6fe557a angie Wed Sep 14 08:31:30 2022 -0700 SARS-CoV-2 protobuf size is now larger than BIGNUM; use BIGLONGLONG to avoid cryptic error. refs #29994 diff --git src/hg/hgPhyloPlace/parsimonyProto.c src/hg/hgPhyloPlace/parsimonyProto.c index a55ab68..adaad5c 100644 --- src/hg/hgPhyloPlace/parsimonyProto.c +++ src/hg/hgPhyloPlace/parsimonyProto.c @@ -239,34 +239,35 @@ struct protobufFieldDef condLeavesField = { NULL, "condensed_leaves", 2, pbdtString, NULL, TRUE }; struct protobufFieldDef nodeNameField = { &condLeavesField, "node_name", 1, pbdtString, NULL, FALSE}; struct protobufDef condNodeDef = { NULL, "condensed_node", &nodeNameField }; // message data { // string newick = 1; // repeated mutation_list node_mutations = 2; // repeated condensed_node condensed_nodes = 3; // } struct protobufFieldDef condNodeField = { NULL, "condensed_nodes", 3, pbdtEmbedded, &condNodeDef, TRUE }; struct protobufFieldDef nodeMutsField = { &condNodeField, "node_mutations", 2, pbdtEmbedded, &mutListDef, TRUE }; struct protobufFieldDef newickField = { &nodeMutsField, "newick", 1, pbdtString, NULL, FALSE }; struct protobufDef def = { NULL, "data", &newickField }; // Parse the protobuf file into protobuf data structures -long long bytesLeft = BIGNUM; +long long bytesLeft = BIGLONGLONG; struct protobuf *data = protobufParse(f, &def, &bytesLeft); if (fgetc(f) != EOF) - errAbort("Why did we not get EOF starting out with BIGNUM?"); + errAbort("Protobuf size exceeded %lx bytes, please report this error to " + "genome-www@soe.ucsc.edu.", BIGLONGLONG); carefulClose(&f); // Convert the protobuf data structures into friendlier data structures struct parsimonyData *parData = parsimonyDataFromProtobuf(data); if (parData == NULL) return NULL; struct mutationAnnotatedTree *tree; AllocVar(tree); tree->tree = phyloParseString(parData->newick); // Annotate the tree (->priv) with parsimonious assignments and single-nucleotide changes. tree->nodeHash = hashNew(digitsBaseTwo(parData->nodeCount) + 1); int nodeNum = 0, iNodeNum = 1; treeAddVariants(tree->tree, parData->nodeMutations, parData->nodeCount, &nodeNum, &iNodeNum, tree->nodeHash); tree->condensedNodes = parData->condensedNodes; // Mem leak since we don't free up protobuf data or packaging of singleNucChanges,