mirror of
https://github.com/clearml/dropbear
synced 2025-02-07 13:21:15 +00:00
check p and q lengths
--HG-- branch : fuzz
This commit is contained in:
parent
88ce30beb6
commit
e3246ceb7e
13
dss.c
13
dss.c
@ -61,8 +61,15 @@ int buf_get_dss_pub_key(buffer* buf, dropbear_dss_key *key) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (mp_count_bits(key->p) < MIN_DSS_KEYLEN) {
|
||||
dropbear_log(LOG_WARNING, "DSS key too short");
|
||||
if (mp_count_bits(key->p) < DSS_P_BITS) {
|
||||
dropbear_log(LOG_WARNING, "Bad DSS p");
|
||||
TRACE(("leave buf_get_dss_pub_key: short key"))
|
||||
ret = DROPBEAR_FAILURE;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (mp_count_bits(key->q) < DSS_Q_BITS) {
|
||||
dropbear_log(LOG_WARNING, "Bad DSS q");
|
||||
TRACE(("leave buf_get_dss_pub_key: short key"))
|
||||
ret = DROPBEAR_FAILURE;
|
||||
goto out;
|
||||
@ -94,7 +101,7 @@ int buf_get_dss_priv_key(buffer* buf, dropbear_dss_key *key) {
|
||||
m_mp_alloc_init_multi(&key->x, NULL);
|
||||
ret = buf_getmpint(buf, key->x);
|
||||
if (ret == DROPBEAR_FAILURE) {
|
||||
m_mp_free_multi(&key->x);
|
||||
m_mp_free_multi(&key->x, NULL);
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user