diff --git a/upb/test/fuzz_util.cc b/upb/test/fuzz_util.cc index 685fd0f166d14..8b5aeb6b7a6cc 100644 --- a/upb/test/fuzz_util.cc +++ b/upb/test/fuzz_util.cc @@ -130,7 +130,9 @@ void Builder::BuildExtensions(upb_ExtensionRegistry** exts) { status.ptr()); if (!ptr) break; if (!LinkExtension(ext)) continue; - if (upb_ExtensionRegistry_Lookup(*exts, ext->UPB_PRIVATE(extendee), + if (upb_MiniTable_FindFieldByNumber(ext->UPB_PRIVATE(extendee), + upb_MiniTableExtension_Number(ext)) || + upb_ExtensionRegistry_Lookup(*exts, ext->UPB_PRIVATE(extendee), upb_MiniTableExtension_Number(ext))) continue; upb_ExtensionRegistry_AddArray( diff --git a/upb/wire/decode_fast/field_unknown.c b/upb/wire/decode_fast/field_unknown.c index e4c54163d5fd4..a902c930e2a32 100644 --- a/upb/wire/decode_fast/field_unknown.c +++ b/upb/wire/decode_fast/field_unknown.c @@ -57,6 +57,8 @@ UPB_FORCEINLINE bool _upb_FastDecoder_DoDecodeUnknown( // message is marked by an EndGroup tag. Since EndGroup tags are not in // the MiniTable, they are routed to the unknown field handler. We must // intercept them here to properly terminate the message. + _upb_Decoder_Trace(d, '<'); + *ptr = start; return UPB_DECODEFAST_EXIT(kUpb_DecodeFastNext_FallbackToMiniTable, ret); } @@ -110,6 +112,7 @@ UPB_FORCEINLINE bool _upb_FastDecoder_DoDecodeUnknown( return UPB_DECODEFAST_ERROR(d, kUpb_DecodeStatus_OutOfMemory, ret); } + _upb_Decoder_Trace(d, 'F'); data = 0; return true; }