> Module Name: src > Committed By: mlelstv > Date: Mon Apr 10 15:26:57 UTC 2023 > > Modified Files: > src/sys/dev/usb: uvideo.c uvideoreg.h > > Log Message: > Better descriptor parsing.
How is it better? What problems does it fix? > Add sanity check if no default format is found. > > @@ -442,12 +442,8 @@ static void print_vs_format_dv_descripto > const uvideo_vs_format_dv_descriptor_t *); > #endif /* !UVIDEO_DEBUG */ > > -#define GET(type, descp, field) > \ > - (KASSERT((descp)->bLength >= sizeof(type)), > \ > - ((const type *)(descp))->field) > -#define GETP(type, descp, field) > \ > - (KASSERT((descp)->bLength >= sizeof(type)), > \ > - &(((const type *)(descp))->field)) > +#define GET(type, descp, field) (((const type *)(descp))->field) > +#define GETP(type, descp, field) (&(((const type *)(descp))->field)) > [...] > @@ -1398,8 +1398,6 @@ uvideo_stream_init_frame_based_format(st > return USBD_INVAL; > } > > - KASSERT(subtypelen >= sizeof(*uvdesc)); Please restore these assertions, and adjust them if needed to make them work. > + uvideo_frame_interval_t uFrameInterval; > } UPACKED uvideo_vs_frame_uncompressed_descriptor_t; > -CTASSERT(sizeof(uvideo_vs_frame_uncompressed_descriptor_t) == 26); Please restore compile-time assertions of these structure sizes so that it is easy to verify they match the spec. Please also add a reference to the section/page/table number in the spec in a comment so it's easy to look up.