| Предыдущий | Следующий |
| OSS_MORE_BUF | OSS_PDU_RANGE |
OSS_NEGATIVE_UINTEGER
OSS_NEGATIVE_UINTEGER (0x80093002) — результат OSS ASN.1 runtime для отрицательного значения в неотрицательном домене INTEGER. Значение, представленное generated API как unsigned или nonnegative ASN.1 INTEGER, оказывается отрицательным при обработке encoder. Поскольку нижняя граница ASN.1 и generated member type имеют решающее значение для этого условия, диапазон HRESULT Microsoft следует рассматривать вместе с документацией return code OSS Nokalva. Начните исследование с фиксации значение до conversion или sign extension, затем отделите закодированное значение от сгенерированных артефактов, аргументов вызова и runtime-пакета, реально загруженного процессом.
Что именно сужает return code
На границе отрицательного значения в неотрицательном домене INTEGER зафиксируйте первую OSS-функцию, вернувшую значение, и отметьте, выполнялись ли encode, decode, copy, compare, constraint validation или настройка trace. Сохраните выбранный PDU, правила кодирования и исходное поле и соглашение о sentinel, если оно есть; иначе внешний certificate/security wrapper может скрыть полезный результат codec за общей ошибкой.
Проверяйте по одной переменной
- закодируйте минимальное допустимое граничное значение
- трассируйте signed-to-unsigned casts у producer
- сравните значение со schema, использованной для генерации этой сборки
Полезный диагностический набор
| Запишите | Диагностическое значение |
|---|---|
| нижняя граница ASN.1 и generated member type | Локализует конкретное сообщение, allocation, module или границу API |
| значение до conversion или sign extension | Отделяет поведение, зависящее от payload, от состояния сборки и процесса |
| исходное поле и соглашение о sentinel, если оно есть | Делает сравнение воспроизводимым без изменения исходного артефакта |
Соседние статусы
Это ошибка домена значения, а не malformed BER из сети и не integer, превышающий implementation limit.
При проверке сохраняйте исходные байты или object graph неизменными закодируйте минимальное допустимое граничное значение. Изменение значение до conversion или sign extension после reload, замены plugin, restart или развертывания schema является данными о состоянии runtime, а не основанием выбрасывать reproducer. Когда исходное поле и соглашение о sentinel, если оно есть указывает на конкретное сообщение, сохраняйте криптографический хеш и минимальный безопасный образец вместо записи certificate, subscriber, credential или private-key material.
Инструментирование
Записывайте полный 32-битный HRESULT и младший OSS return number вместе с направлением операции, символическим PDU, правилом кодирования, числом байтов и идентификатором generated table. Там, где нижняя граница ASN.1 и generated member type может раскрывать чувствительные данные, хеш с ограниченным структурным фрагментом безопаснее полного payload. Используйте значение до conversion или sign extension вместе с путями и версиями модулей OSS, записанными один раз на процесс, чтобы сопоставлять различия упаковки без засорения обычной диагностики.
Матрица решений
| Контролируемое наблюдение | Подтверждаемый вывод |
|---|---|
| закодируйте минимальное допустимое граничное значение | Изменившийся результат локализует первый предлагаемый контроль вместо слепого повтора |
| нижняя граница ASN.1 и generated member type различаются между успешным и неуспешным случаем | Разница локализует отрицательное значение в nonnegative INTEGER domain до изменения несвязанных настроек |
| Независимый decoder принимает тот же артефакт | Проверьте сгенерированную schema, выбранные rules, ABI и необязательные модули OSS, прежде чем объявлять байты недействительными |
| Новый control object изменяет результат | Исследуйте инициализацию, lifecycle, владение allocator, изменение конфигурации и concurrent access |
Проверка исправления
Исправьте producer или сопоставление schema и сохраните тесты для отрицательной и нулевой границ. Тест восстановления для закодируйте минимальное допустимое граничное значение должен повторять ту же операцию при той же schema и encoding rule, сохранять один намеренно недействительный control и проверять владение/очистку после обоих исходов. Успех после непроанализированного повтора не доказывает, что нижняя граница ASN.1 и generated member type теперь соответствует контракту codec.
Технические ссылки
- Microsoft: определения HRESULT OSS ASN.1
- OSS Nokalva: return codes encoder/decoder
- OSS Nokalva: runtime-функции и инициализация control
- Соответствующая спецификация ASN.1 или деталь runtime
Нужно найти другой код? Найти другой код состояния или ошибки.
