FreeRDP
Loading...
Searching...
No Matches
TestFuzzClientRdpFile.c
1
18#include <stddef.h>
19#include <stdint.h>
20
21#include <freerdp/client/file.h>
22#include <freerdp/settings.h>
23
24static void populate_settings(const rdpFile* file, BOOL unchecked)
25{
26 rdpSettings* settings = freerdp_settings_new(0);
27 if (!settings)
28 return;
29
30 if (unchecked)
31 (void)freerdp_client_populate_settings_from_rdp_file_unchecked(file, settings);
32 else
33 (void)freerdp_client_populate_settings_from_rdp_file(file, settings);
34
35 freerdp_settings_free(settings);
36}
37
38int LLVMFuzzerTestOneInput(const uint8_t* Data, size_t Size)
39{
40 rdpFile* file = freerdp_client_rdp_file_new();
41 if (!file)
42 return 0;
43
44 char* buf = calloc(Size + 1, sizeof(char));
45 if (buf == nullptr)
46 goto err;
47 memcpy(buf, Data, Size);
48 buf[Size] = '\0';
49
50 if (freerdp_client_parse_rdp_file_buffer(file, (const BYTE*)buf, Size + 1))
51 {
52 populate_settings(file, FALSE);
53 populate_settings(file, TRUE);
54 }
55
56err:
57 freerdp_client_rdp_file_free(file);
58 free(buf);
59
60 return 0;
61}
FREERDP_API rdpSettings * freerdp_settings_new(DWORD flags)
creates a new setting struct
FREERDP_API void freerdp_settings_free(rdpSettings *settings)
Free a settings struct with all data in it.