Что означает код ошибки Windows 534 (ERROR_ARITHMETIC_OVERFLOW)?

 
Также может означать:
КонстантаТипОС
STATUS_OPLOCK_HANDLE_CLOSEDNTSTATUSWindows
Предыдущий Следующий
ERROR_USER_PROFILE_LOAD ERROR_PIPE_CONNECTED

ERROR_ARITHMETIC_OVERFLOW

description[результат вычисления вышел за пределы поддерживаемого целочисленного диапазона.]

Результат арифметической операции превысил поддерживаемый диапазон

ERROR_ARITHMETIC_OVERFLOW означает, что целочисленное вычисление или преобразование не может быть представлено в типе назначения. Классическое сообщение упоминает 32 бита, но практическая проблема заключается в небезопасном преобразовании диапазона.

Распространённые причины

  • Умножение количества элементов на их размер без проверки переполнения.
  • Преобразование размеров файлов, смещений или временных меток в более узкий тип.
  • Смешивание знаковых и беззнаковых значений.
  • Вычисление размеров буферов из недоверенных входных данных.

Диагностика

Запишите операнды, исходный и целевой типы и точку преобразования. Проверьте граничные значения, ноль, отрицательные входы и значения около максимально представимого размера. Статический анализ и проверки переполнения компилятора позволяют обнаружить многие пути.

Правильная обработка

Используйте функции проверяемой арифметики до выделения памяти или ввода-вывода. Отклоняйте невозможные запросы вместо молчаливого зацикливания по модулю или насыщения. Храните размеры и смещения в типах, достаточно широких для платформы и контракта API.

Важность для безопасности

Непроверенное переполнение может превратить большой логический размер в маленькое выделение памяти и привести к повреждению буфера. Рассматривайте ошибки переполнения на границах доверия как ошибки проверки входных данных, а не как редкие исключительные случаи.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.