| Предыдущий | Следующий |
| ERROR_INVALID_SUB_AUTHORITY | ERROR_INVALID_SID |
ERROR_INVALID_ACL
ERROR_INVALID_ACL (1336, 0x00000538) означает, что список управления доступом имеет недопустимую двоичную структуру. Это ошибка структуры данных, а не обычное решение об отказе в доступе.
Что проверяет Windows
ACL содержит номер редакции, общий размер и количество записей управления доступом. IsValidAcl проверяет редакцию и убеждается, что количество записей помещается в объявленный размер ACL. Поэтому эту ошибку может вызвать неправильно инициализированный буфер, неверная длина или повреждение памяти.
Как предотвратить
- Создавайте новые ACL с помощью
InitializeAclи добавляйте записи через документированные API ACL, а не записывайте двоичные поля напрямую. - Рассчитайте и сохраняйте размер буфера, необходимый для ACL, включая каждую ACE и SID.
- Проверяйте ACL, полученный извне или десериализованный, до его присоединения к дескриптору безопасности.
- Сохраняйте буфер ACL действительным всё время, пока на него ссылается дескриптор безопасности.
См. документацию Microsoft по IsValidAcl и списки управления доступом.
Нужно найти другой код? Найти другой код состояния или ошибки.
