Files
mosquitto/fuzzing/libcommon/libcommon_fuzz_property.cpp
2025-12-10 00:49:12 +00:00

48 lines
1.8 KiB
C++

#include "src/libfuzzer/libfuzzer_macro.h"
#include "libcommon_fuzz_property.pb.h"
#include "mosquitto.h"
DEFINE_PROTO_FUZZER(const fuzz_property::FuzzerInput& fuzzer_input)
{
mosquitto_property *prop_list = nullptr;
mosquitto_property *prop_copy = nullptr;
for(const fuzz_property::Property& property : fuzzer_input.properties()){
int identifier = property.identifier();
switch(property.data_case()){
case fuzz_property::Property::DataCase::kUint8Value:
mosquitto_property_add_byte(&prop_list, identifier, property.uint8_value() % 256);
break;
case fuzz_property::Property::DataCase::kUint16Value:
mosquitto_property_add_int16(&prop_list, identifier, property.uint16_value() % 65536);
break;
case fuzz_property::Property::DataCase::kUint32Value:
mosquitto_property_add_int32(&prop_list, identifier, property.uint32_value());
break;
case fuzz_property::Property::DataCase::kVarintValue:
mosquitto_property_add_varint(&prop_list, identifier, property.varint_value());
break;
case fuzz_property::Property::DataCase::kBinaryValue:
mosquitto_property_add_binary(&prop_list, identifier,
property.binary_value().c_str(),
property.binary_value().size());
break;
case fuzz_property::Property::DataCase::kStringValue:
mosquitto_property_add_string(&prop_list, identifier, property.string_value().c_str());
break;
case fuzz_property::Property::DataCase::kStringpairValue:
mosquitto_property_add_string_pair(&prop_list, identifier,
property.stringpair_value().name().c_str(),
property.stringpair_value().value().c_str());
break;
case fuzz_property::Property::DataCase::DATA_NOT_SET:
break;
}
}
mosquitto_property_copy_all(&prop_copy, prop_list);
mosquitto_property_free_all(&prop_list);
mosquitto_property_free_all(&prop_copy);
}