| Предыдущий | Следующий |
| WSA_QOS_EFILTERCOUNT | WSA_QOS_EFLOWCOUNT |
WSA_QOS_EOBJLENGTH
ObjectLength ограничивает каждый типизированный объект внутри байтового буфера
WSA_QOS_EOBJLENGTH означает, что значение QOS_OBJECT_HDR.ObjectLength не может описывать полный допустимый объект. Длина должна включать заголовок и полезную нагрузку объекта, оставаться в пределах охватывающего буфера ProviderSpecific и позволять анализатору найти следующий объект. Даже правильный тип структуры с неверной длиной небезопасен для обработки.
Обходите буфер по явным байтовым смещениям и проверяйте, что каждая длина не меньше минимального размера для ObjectType. До прибавления длины к текущему смещению выявляйте арифметическое переполнение. Особенно внимательно проверяйте упакованные структуры, копируемые между 32- и 64-разрядными процессами, и данные политик переменной длины. Не заменяйте заявленную длину значением sizeof безусловно, если объект содержит хвостовые данные.
Инварианты длины, которые следует проверить
- ObjectLength включает QOS_OBJECT_HDR.
- Конец объекта не выходит за WSABUF.len.
- Следующий объект начинается по ожидаемому смещению.
- Размер переменной полезной нагрузки соответствует внутреннему счётчику.
Ссылки
- Microsoft: разметка объектов QOS
- Microsoft: обход буфера ProviderSpecific
- Microsoft: структуры объектов qos.h
Нужно найти другой код? Найти другой код состояния или ошибки.