Internal change PiperOrigin-RevId: 1000895007
diff --git a/upb/message/convert_fuzz_test.cc b/upb/message/convert_fuzz_test.cc index 2c86d02..6f7e4cb 100644 --- a/upb/message/convert_fuzz_test.cc +++ b/upb/message/convert_fuzz_test.cc
@@ -615,6 +615,30 @@ 20), 372456973, 1140553636); } + +TEST(ConvertFuzz, ArbitraryMiniTableConvertFuzzRegression_b574481805) { + ArbitraryMiniTableConvertFuzz( + upb::fuzz::MiniTableFuzzInput{ + {"&", "", "%%%", "", ""}, {}, "#3", {0, 2884765147, 4294967295}}, + upb::fuzz::MiniTableFuzzInput{{"&"}, {}, "", {1}}, + std::string( + "\n{ppppppp`0\000ppppppppppppppppppuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu" + "uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuquuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu" + "uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu" + "uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu\331uuuuuuuuuu" + "uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu" + "uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu" + "uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu" + "uuuuuuuuu\010\010\010\010uuuuuuuuuuuuuuuuuuuyuuuuuuuuuuuuuuuuuuuuuuu" + "uuuuuuuuuuuuuusuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu\301\301\301" + "\301\301\301uuuuuu~uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu\215uuuuuuu" + "uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu" + "uuuuuuuuuuuuuuuuuuuuuuuuppppppppppppppp\371\371\371pp\331:\000\000p" + "\n\nppppppppppppppppppuppppppppppppppppp\216ppppp\n\nppppppppppppppp" + "ppppopppppppppppp)pppppppppp", + 858), + 623911074, 3917243171); +} } // namespace } // namespace upb
diff --git a/upb/test/fuzz_util.cc b/upb/test/fuzz_util.cc index ed39d18..9173467 100644 --- a/upb/test/fuzz_util.cc +++ b/upb/test/fuzz_util.cc
@@ -110,13 +110,13 @@ upb_MiniTableField* field = &ext->UPB_PRIVATE(field); if (upb_MiniTableField_CType(field) == kUpb_CType_Message) { auto mt = NextMiniTable(); - if (!mt) field->UPB_PRIVATE(descriptortype) = kUpb_FieldType_Int32; - upb_MiniTableExtension_SetSubMessage(ext, mt); + if (!mt) return false; + if (!upb_MiniTableExtension_SetSubMessage(ext, mt)) return false; } if (upb_MiniTableField_IsClosedEnum(field)) { auto et = NextEnumTable(); if (!et) return false; - upb_MiniTableExtension_SetSubEnum(ext, et); + if (!upb_MiniTableExtension_SetSubEnum(ext, et)) return false; } return true; } @@ -138,7 +138,7 @@ *exts = nullptr; return; } - upb_MiniTableSub sub; + upb_MiniTableSub sub = upb_MiniTableSub_FromMessage(nullptr); const upb_MiniTable* extendee = NextMiniTable(); if (!extendee) break; ptr = upb_MiniTableExtension_Init(ptr, end - ptr, ext, extendee, sub,