Add fuzzer for certificate_data_set_pem()

Part of #6682
This commit is contained in:
Sergey Bronnikov 2020-12-22 16:01:26 +03:00 committed by akallabeth
parent 249b4f80d0
commit 2ad1469612
2 changed files with 36 additions and 0 deletions

View File

@ -9,6 +9,9 @@ set(${MODULE_PREFIX}_TESTS
TestStreamDump.c
TestSettings.c)
set(${MODULE_PREFIX}_FUZZERS
TestFuzzCryptoCertificateDataSetPEM.c)
if(WITH_SAMPLE AND WITH_SERVER)
set(${MODULE_PREFIX}_TESTS
${${MODULE_PREFIX}_TESTS}
@ -28,6 +31,16 @@ add_definitions(-DTESTING_SRC_DIRECTORY="${PROJECT_SOURCE_DIR}")
target_link_libraries(${MODULE_NAME} freerdp winpr freerdp-client)
if (BUILD_FUZZERS)
foreach(test ${${MODULE_PREFIX}_FUZZERS})
get_filename_component(TestName ${test} NAME_WE)
add_executable(${TestName} ${test})
target_link_libraries(${TestName} freerdp winpr freerdp-client fuzzer_config)
add_test(${TestName} ${TESTING_OUTPUT_DIRECTORY}/${MODULE_NAME} ${TestName})
set_target_properties(${TestName} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")
endforeach()
endif (BUILD_FUZZERS)
set_target_properties(${MODULE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")
foreach(test ${${MODULE_PREFIX}_TESTS})

View File

@ -0,0 +1,23 @@
#include <stddef.h>
#include <stdint.h>
#include <freerdp/crypto/certificate.h>
int LLVMFuzzerTestOneInput(const uint8_t* Data, size_t Size)
{
char* buf = calloc(Size + 1, sizeof(char));
rdpCertificateData* cert_data = certificate_data_new("somehost", 1234);
if (!buf || !cert_data)
goto cleanup;
memcpy(buf, Data, Size);
if (!certificate_data_set_pem(cert_data, buf))
{
goto cleanup;
}
cleanup:
certificate_data_free(cert_data);
free(buf);
return 0;
}