Выполнение операции хеша на пустом контексте может вызвать ошибки времени выполнения
Дефект происходит, когда вы только обновляете контекст дайджеста сообщения с пустыми данными, или вы выполняете последний шаг на контексте дайджеста сообщения, не выполняя шага обновления.
Когда вы используете функции дайджеста сообщения, вы обычно инициализируете контекст дайджеста сообщения и выполняете по крайней мере один шаг обновления, чтобы добавить данные в контекст. Вы затем подписываете, проверяете или получаете данные в контексте как последний шаг.
Средство проверки не повышает дефекта, если никакая информация не доступна о контексте. Например, если контекст передается в качестве аргумента функции, которая вызывает операцию хеширования или если контекст объявляется вне осциллографа функции. Например, никакой дефект не повышен в этом фрагменте кода.
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 |