Выполнение операции хеша на пустом контексте может вызвать ошибки времени выполнения
Дефект происходит, когда вы только обновляете контекст дайджеста сообщения с пустыми данными, или вы выполняете последний шаг на контексте дайджеста сообщения, не выполняя шага обновления.
Когда вы используете функции дайджеста сообщения, вы обычно инициализируете контекст дайджеста сообщения и выполняете по крайней мере один шаг обновления, чтобы добавить данные в контекст. Вы затем подписываете, проверяете или получаете данные в контексте как последний шаг.
Средство проверки не повышает дефекта, если никакая информация не доступна о контексте. Например, если контекст передается в качестве аргумента функции, которая вызывает операцию хеширования или если контекст объявляется вне осциллографа функции. Например, никакой дефект не повышен в этом фрагменте кода.
void bar(unsigned char* src, int len, EVP_MD_CTX *ctx) {
//ctx passed as argument of bar()
EVP_DigestFinal(ctx, out_buf, &out_len); //no defect
}
EVP_MD_CTX glob_ctx;
void foo(unsigned char* src, int len) {
//glob_ctx declared outside scope of foo()
EVP_DigestFinal(&glob_ctx, out_buf, &out_len); //no defect
}Выполнение шага обновления на контексте с пустыми данными может привести к ошибке времени выполнения.
Выполнение последнего шага на контексте без данных может привести к неожиданному поведению.
Выполните по крайней мере одну операцию обновления с непустыми данными по контексту дайджеста сообщения, прежде чем вы подпишете, проверите или получите данные в контексте.
| Группа: криптография |
| Язык: C | C++ |
| Значение по умолчанию: 'off' |
Синтаксис командной строки:
CRYPTO_MD_NO_DATA |
| Удар: носитель |
| ID CWE: 325 |