2#include <winpr/stream.h>
8static const BYTE config_one_iface[] = {
15 0x00, 0x00, 0x00, 0x00,
24static int test_full_config(
void)
27 wStream* s = Stream_StaticConstInit(&sbuffer, config_one_iface,
sizeof(config_one_iface));
32 (void)fprintf(stderr,
"msusb_msconfig_read rejected a complete descriptor\n");
37 if ((cfg->wTotalLength != 0xBEEF) || (cfg->bConfigurationValue != 0x42) ||
38 (cfg->NumInterfaces != 1))
40 (void)fprintf(stderr,
"msusb_msconfig_read parsed wrong values\n");
43 msusb_msconfig_free(cfg);
50static int test_truncated_trailer(
void)
53 wStream* s = Stream_StaticConstInit(&sbuffer, config_one_iface, 12);
58 (void)fprintf(stderr,
"msusb_msconfig_read accepted a truncated trailer\n");
59 msusb_msconfig_free(cfg);
67static int test_capacity_exceeds_length(
void)
69 BYTE buffer[64] = { 0 };
70 CopyMemory(buffer, config_one_iface,
sizeof(config_one_iface));
73 wStream* s = Stream_StaticInit(&sbuffer, buffer,
sizeof(buffer));
74 if (!Stream_SetLength(s, 12))
80 (void)fprintf(stderr,
"msusb_msconfig_read read past the sealed length\n");
81 msusb_msconfig_free(cfg);
88static int test_interface_truncated_pipes(
void)
90 const BYTE iface[] = {
96 0x04, 0x00, 0x00, 0x00
99 wStream* s = Stream_StaticConstInit(&sbuffer, iface,
sizeof(iface));
104 (void)fprintf(stderr,
"msusb_msinterface_read accepted missing pipe data\n");
105 msusb_msinterface_free(desc);
111int TestMsUsb(
int argc,
char* argv[])
116 if (test_full_config() != 0)
118 if (test_truncated_trailer() != 0)
120 if (test_capacity_exceeds_length() != 0)
122 if (test_interface_truncated_pipes() != 0)