20#include <winpr/clipboard.h>
21#include <winpr/wlog.h>
23static const char* kSourceFormats[] = {
"CF_DIB",
29 "FileGroupDescriptorW",
35int LLVMFuzzerTestOneInput(
const uint8_t* data,
size_t size)
37 static BOOL loggingInitialized = FALSE;
39 if (!loggingInitialized)
41 (void)WLog_SetLogLevel(WLog_GetRoot(), WLOG_TRACE);
42 (void)WLog_SetLogAppenderType(WLog_GetRoot(), WLOG_APPENDER_CALLBACK);
43 loggingInitialized = TRUE;
48 if (size > (1u << 20))
51 wClipboard* clipboard = ClipboardCreate();
55 const size_t count =
sizeof(kSourceFormats) /
sizeof(kSourceFormats[0]);
56 const char* srcName = kSourceFormats[data[0] % count];
58 UINT32 srcId = ClipboardRegisterFormat(clipboard, srcName);
62 (void)ClipboardSetData(clipboard, srcId, data + 1, (UINT32)(size - 1));
64 UINT32* formatIds =
nullptr;
65 UINT32 numFormats = ClipboardGetFormatIds(clipboard, &formatIds);
67 for (UINT32 i = 0; i < numFormats; i++)
70 void* out = ClipboardGetData(clipboard, formatIds[i], &outSize);
76 ClipboardDestroy(clipboard);