forked from Green-Sky/tomato
Squashed 'external/toxcore/c-toxcore/' changes from 67badf694..82460b212
82460b212 feat: add ngc events 24b54722a fix: Ensure we have allocators available for the error paths. 48dbcfebc cleanup: Remove redundant `-DSODIUM_EXPORT` from definitions. 0cef46ee9 cleanup: Fix a few more clang-tidy warnings. 0c5b918e9 cleanup: Fix a few more clang-tidy warnings. 4d3c97f49 cleanup: Enforce stricter identifier naming using clang-tidy. a549807df refactor: Add `mem` module to allow tests to override allocators. 6133fb153 chore: Add devcontainer setup for codespaces. 620e07ecd chore: Set a timeout for tests started using Conan c0ec33b16 chore: Migrate Windows CI from Appveyor to Azure DevOps 8ed47f3ef fix incorrect documentation a1e245841 docs: Fix doxygen config and remove some redundant comments. b0f633185 chore: Fix the Android CI job 7469a529b fix: Add missing `#include <array>`. 2b1a6b0d2 add missing ngc constants getter declarations and definitions 2e02d5637 chore: Add missing module dependencies. REVERT: 67badf694 feat: add ngc events git-subtree-dir: external/toxcore/c-toxcore git-subtree-split: 82460b2124216af1ac9d63060de310a682a2fd15
This commit is contained in:
@ -1,13 +1,33 @@
|
||||
#include "tox_events.h"
|
||||
|
||||
#include <cstdint>
|
||||
#include <cstring>
|
||||
#include <vector>
|
||||
|
||||
#include "../testing/fuzzing/fuzz_support.h"
|
||||
|
||||
namespace {
|
||||
|
||||
void TestUnpack(const uint8_t *data, size_t size)
|
||||
void TestUnpack(Fuzz_Data data)
|
||||
{
|
||||
Tox_Events *events = tox_events_load(data, size);
|
||||
// 2 bytes: size of the events data
|
||||
CONSUME_OR_RETURN(const uint8_t *events_size_bytes, data, sizeof(uint16_t));
|
||||
uint16_t events_size;
|
||||
std::memcpy(&events_size, events_size_bytes, sizeof(uint16_t));
|
||||
|
||||
// events_size bytes: events data (max 64K)
|
||||
CONSUME_OR_RETURN(const uint8_t *events_data, data, events_size);
|
||||
|
||||
if (data.size == 0) {
|
||||
// If there's no more input, no malloc failure paths can possibly be
|
||||
// tested, so we ignore this input.
|
||||
return;
|
||||
}
|
||||
|
||||
// rest of the fuzz data is input for malloc
|
||||
Fuzz_System sys{data};
|
||||
|
||||
Tox_Events *events = tox_events_load(sys.sys.get(), events_data, events_size);
|
||||
if (events) {
|
||||
std::vector<uint8_t> packed(tox_events_bytes_size(events));
|
||||
tox_events_get_bytes(events, packed.data());
|
||||
@ -20,6 +40,6 @@ void TestUnpack(const uint8_t *data, size_t size)
|
||||
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
|
||||
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
|
||||
{
|
||||
TestUnpack(data, size);
|
||||
TestUnpack(Fuzz_Data(data, size));
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user