10#include <winpr/wlog.h>
12#include <freerdp/codec/color.h>
13#include <freerdp/codec/nsc.h>
15static int fuzz_nsc_message(UINT16 bpp, UINT32 width, UINT32 height, UINT32 dstFormat,
16 const uint8_t* data,
size_t size)
20 if (size > UINT32_MAX)
23 NSC_CONTEXT* ctx = nsc_context_new();
27 SSIZE_T stride = (SSIZE_T)width * FreeRDPGetBytesPerPixel(dstFormat);
31 dst = calloc((
size_t)height, (
size_t)stride);
35 (void)nsc_process_message(ctx, bpp, width, height, data, (UINT32)size, dst, dstFormat,
36 (UINT32)stride, 0, 0, width, height, FREERDP_FLIP_NONE);
40 nsc_context_free(ctx);
44int LLVMFuzzerTestOneInput(
const uint8_t* data,
size_t size)
46 static BOOL loggingInitialized = FALSE;
48 if (!loggingInitialized)
50 (void)WLog_SetLogLevel(WLog_GetRoot(), WLOG_TRACE);
51 loggingInitialized = TRUE;
57 (void)fuzz_nsc_message(32, 64, 64, PIXEL_FORMAT_BGRA32, data, size);
58 (void)fuzz_nsc_message(24, 32, 32, PIXEL_FORMAT_RGBX32, data, size);
59 (void)fuzz_nsc_message(16, 17, 13, PIXEL_FORMAT_RGB16, data, size);