Fix error in fuzztest with oneofs
diff --git a/tests/fuzztest/validation.c b/tests/fuzztest/validation.c
index 939bf9e..9286e5f 100644
--- a/tests/fuzztest/validation.c
+++ b/tests/fuzztest/validation.c
@@ -22,6 +22,14 @@
assert(memcmp(iter->pSize, &truebool, sizeof(bool)) == 0 ||
memcmp(iter->pSize, &falsebool, sizeof(bool)) == 0);
}
+ else if (PB_HTYPE(iter->type) == PB_HTYPE_ONEOF)
+ {
+ if (*(pb_size_t*)iter->pSize != iter->tag)
+ {
+ /* Some different field in oneof */
+ return;
+ }
+ }
for (i = 0; i < count; i++)
{
@@ -58,7 +66,15 @@
bool truebool = true;
bool falsebool = false;
- if (!iter->pData)
+ if (PB_HTYPE(iter->type) == PB_HTYPE_ONEOF)
+ {
+ if (*(pb_size_t*)iter->pSize != iter->tag)
+ {
+ /* Some different field in oneof */
+ return;
+ }
+ }
+ else if (!iter->pData)
{
/* Nothing allocated */
if (PB_HTYPE(iter->type) == PB_HTYPE_REPEATED && iter->pSize != &iter->array_size)