Skip to content

Commit fb6545d

Browse files
committed
simplified example
1 parent b958d28 commit fb6545d

File tree

3 files changed

+24
-35
lines changed

3 files changed

+24
-35
lines changed

src/advanced_examples/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
set(OPENSSL_USE_STATIC_LIBS TRUE)
22
find_package(OpenSSL REQUIRED)
3+
#include(libprotobuf-mutator)
34

45
add_library(explore_me_advanced
56
explore_me.cpp

src/advanced_examples/custom_mutator_example_checks_test.cpp

Lines changed: 16 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -7,52 +7,36 @@
77
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
88
#include <gtest/gtest.h>
99

10-
TEST(ExploreCustomMutatorExampleChecks, DeveloperTest) {
11-
SpecialRequirementsStruct inputStruct = (SpecialRequirementsStruct) {.a=0, .b= 10, .c= 0, .c_size= 0};
12-
inputStruct.c = malloc(sizeof("Developer"));
13-
inputStruct.c_size = sizeof("Developer");
14-
EXPECT_NO_THROW(ExploreCustomMutatorExampleChecks(&inputStruct));
10+
TEST(ExploreStructuredInputChecks, DeveloperTest) {
11+
InputStruct inputStruct = (InputStrut) {.a=0, .b= 10, .c="Developer"};
12+
EXPECT_NO_THROW(ExploreStructuredInputChecks(inputStruct));
1513
}
1614

1715
TEST(ExploreStructuredInputChecks, MaintainerTest) {
18-
InputStrut inputStruct = (InputStruct) {.a=20, .b= -10, .c=0};
19-
inputStruct.c = malloc(sizeof("Maintainer"));
20-
inputStruct.c_size = sizeof("Maintainer");
21-
EXPECT_NO_THROW(ExploreCustomMutatorExampleChecks(&inputStruct));
16+
InputStruct inputStruct = (InputStruct) {.a=20, .b= -10, .c="Maintainer"};
17+
EXPECT_NO_THROW(ExploreStructuredInputChecks(inputStruct));
2218
}
2319

2420
#endif
2521

2622
FUZZ_TEST(const uint8_t *data, size_t size) {
27-
SpecialRequirementsStruct* inputStruct = (SpecialRequirementsStruct*) data;
28-
ExploreCustomMutatorExampleChecks(inputStruct);
23+
FuzzedDataProvider fdp(data, size);
24+
long a = fdp.ConsumeIntegral<long>();
25+
long b = fdp.ConsumeIntegral<long>();
26+
std::string c = fdp.ConsumeRemainingBytesAsString();
2927

30-
free(inputStruct->c);
28+
InputStruct inputStruct = (InputStruct) {
29+
.a = a,
30+
.b = b,
31+
.c = c,
32+
};
33+
ExploreStructuredInputChecks(inputStruct);
3134
}
3235

3336

3437
extern "C" size_t LLVMFuzzerCustomMutator(uint8_t *Data, size_t Size,
3538
size_t MaxSize, unsigned int Seed) {
3639
std::cout << "In custom mutator.\n";
3740

38-
FuzzedDataProvider fdp(Data, Size);
39-
long a = fdp.ConsumeIntegral<long>();
40-
long b = fdp.ConsumeIntegral<long>();
41-
std::string tempC = fdp.ConsumeRemainingBytesAsString();
42-
size_t c_size = strlen(tempC.c_str()) +1;
43-
char* c = (char*) malloc(c_size);
44-
strncpy(c, tempC.c_str(), c_size);
45-
SpecialRequirementsStruct specialRequirementsStruct = (SpecialRequirementsStruct) {
46-
.a= a, .b=b, .c_size=c_size, .c= c
47-
};
48-
size_t size1 = sizeof(specialRequirementsStruct);
49-
50-
if (MaxSize >= size1) {
51-
free(Data);
52-
Data = (uint8_t*) malloc (size1);
53-
std::memcpy(Data, &specialRequirementsStruct, size1);
54-
return sizeof(specialRequirementsStruct);
55-
} else {
56-
return MaxSize;
57-
}
41+
return Size;
5842
}

src/advanced_examples/structured_input_checks_test.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,14 @@ TEST(ExploreStructuredInputChecks, MaintainerTest) {
2020

2121
FUZZ_TEST(const uint8_t *data, size_t size) {
2222
FuzzedDataProvider fdp(data, size);
23-
int a = fdp.ConsumeIntegral<int>();
24-
int b = fdp.ConsumeIntegral<int>();
23+
long a = fdp.ConsumeIntegral<long>();
24+
long b = fdp.ConsumeIntegral<long>();
2525
std::string c = fdp.ConsumeRemainingBytesAsString();
26-
InputStruct inputStruct = (InputStruct) {.a=a, .b= b, .c=c};
2726

27+
InputStruct inputStruct = (InputStruct) {
28+
.a = a,
29+
.b = b,
30+
.c = c,
31+
};
2832
ExploreStructuredInputChecks(inputStruct);
2933
}

0 commit comments

Comments
 (0)