6bb6a4d5b9cd9812ed63d2d2e80580099b3bc557 angie Thu Feb 25 18:59:31 2021 -0800 Fix bug in skipping unrecognized protobuf repeated field (put else clause in the right place). diff --git src/hg/lib/protobuf.c src/hg/lib/protobuf.c index 90b704a..28c630d 100644 --- src/hg/lib/protobuf.c +++ src/hg/lib/protobuf.c @@ -259,37 +259,37 @@ verbose(2, "Expecting %lld bytes of embedded '%s' message.\n", emByteLength, field->def->embedded->name); if (emByteLength > 0) { AllocArray(field->value.vEmbedded, emByteLength); for (i = 0; emBytesLeft > 0; i++) field->value.vEmbedded[i] = protobufParse(stream, field->def->embedded, &emBytesLeft); field->length = i; } } else errAbort("Sorry, data type %d not yet supported", dataType); *pBytesLeft -= emByteLength; } + } else { verbose(2, "Skipping %lld bytes of undefined field\n", emByteLength); pbSkipBytes(stream, emByteLength, pBytesLeft); } } - } break; case pbwt32b: val32b = pbParse32b(stream, pBytesLeft); if (dataType == pbdtFixed32) field->value.vUint32 = val32b; else if (field->def) errAbort("Sorry, data type %d not yet supported", dataType); break; default: errAbort("Unsupported wire type %d", wireType); } return field; } struct protobuf *protobufParse(FILE *stream, struct protobufDef *proto, long long *pBytesLeft)