google / google/leveldb

Suggest fuzzer for Slice() and ConsumeDecimalNumber()

Open
#1,060 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
39.4k
Forks
8.2k
PR merge metrics
No merged PRs in 30d

Description

I suggest this fuzzer for continuous vulnerability checks.

```cpp
/*
* This fuzzer is generated by UTopia with some manual modifications.
* (UTopia Project: https://github.com/Samsung/UTopia)
*/

#include "FuzzedDataProvider.h"
#include "leveldb/slice.h"
#include "util/logging.h"

using namespace leveldb;

static inline void
Logging_ConsumeDecimalNumberRoundtrip(FuzzedDataProvider &provider) {
auto fuzz1 = provider.ConsumeIntegral();
auto fuzz2 = provider.ConsumeRandomLengthString();
std::string decimal_number = NumberToString(fuzz1);
std::string input_string = decimal_number + fuzz2;
Slice input(input_string);
Slice output = input;
uint64_t result;
if (!ConsumeDecimalNumber(&output, &result))
return;
output.data() - input.data();
output.size();
}

extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, uint32_t size) {
FuzzedDataProvider provider(data, size);
Logging_ConsumeDecimalNumberRoundtrip(provider);
return 0;
}
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.