Green Sky
a3126d581b
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
46 lines
1.2 KiB
C++
46 lines
1.2 KiB
C++
#include "tox_events.h"
|
|
|
|
#include <cstdint>
|
|
#include <cstring>
|
|
#include <vector>
|
|
|
|
#include "../testing/fuzzing/fuzz_support.h"
|
|
|
|
namespace {
|
|
|
|
void TestUnpack(Fuzz_Data data)
|
|
{
|
|
// 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());
|
|
}
|
|
tox_events_free(events);
|
|
}
|
|
|
|
} // namespace
|
|
|
|
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
|
|
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
|
|
{
|
|
TestUnpack(Fuzz_Data(data, size));
|
|
return 0;
|
|
}
|