Заполнение байтов может содержать конфиденциальную информацию
Этот дефект возникает, когда вы не инициализируете данные заполнения структуры или объединения перед передачей его через контур доверия. Компилятор добавляет заполнение байтов в структуру или объединение, чтобы гарантировать правильное выравнивание памяти его представителей. Битовые поля модулей могут также иметь биты заполнения.
Утечка информации через заполнение конструкции вызывает дефект, когда:
Вы вызываете ненадежную функцию со структурой или аргументом типа указателя объединения, содержащим неинициализированные данные заполнения.
Все внешние функции считаются ненадежными.
Вы копируете или назначаете структуру или объединение, содержащее неинициализированные данные заполнения, ненадежному объекту.
Все внешние структуры или объекты объединения, выходные параметры всех внешне связанных функций и обратный указатель всех внешних функций считаются ненадежными объектами.
Байты заполнения переданной структуры или объединения могут содержать конфиденциальную информацию, к которой может получить доступ ненадежный источник.
Предотвратите сложение байтов заполнения для выравнивания памяти при помощи pack
прагма или атрибут, поддерживаемые вашим компилятором.
Явное объявление и инициализация заполнения байтов как полей в структуре или объединении.
Явное объявление и инициализация битовых полей, соответствующих битам заполнения, даже если вы используете pack
прагма или атрибут, поддерживаемые вашим компилятором.
Группа: Безопасность |
Язык: C | C++ |
По умолчанию: Off |
Синтаксис командной строки
: PADDING_INFO_LEAK |
Влияние: Низкое |
Find defects (-checkers)
| Invalid assumptions about memory organization
| Memory comparison of padding data
| Sensitive heap memory not cleared before release
| Uncleared sensitive data in stack
| Use of memset with size argument zero