mirror of
https://github.com/clearml/dropbear
synced 2025-02-07 13:21:15 +00:00
Fix null pointer dereference found by libfuzzer
--HG-- branch : fuzz
This commit is contained in:
parent
fb8fb7fed0
commit
30d3ccd419
@ -102,7 +102,8 @@ enum signkey_type signkey_type_from_name(const char* name, unsigned int namelen)
|
|||||||
return DROPBEAR_SIGNKEY_NONE;
|
return DROPBEAR_SIGNKEY_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Returns a pointer to the key part specific to "type" */
|
/* Returns a pointer to the key part specific to "type".
|
||||||
|
Be sure to check both (ret != NULL) and (*ret != NULL) */
|
||||||
void **
|
void **
|
||||||
signkey_key_ptr(sign_key *key, enum signkey_type type) {
|
signkey_key_ptr(sign_key *key, enum signkey_type type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
@ -294,7 +295,7 @@ void buf_put_pub_key(buffer* buf, sign_key *key, enum signkey_type type) {
|
|||||||
#if DROPBEAR_ECDSA
|
#if DROPBEAR_ECDSA
|
||||||
if (signkey_is_ecdsa(type)) {
|
if (signkey_is_ecdsa(type)) {
|
||||||
ecc_key **eck = (ecc_key**)signkey_key_ptr(key, type);
|
ecc_key **eck = (ecc_key**)signkey_key_ptr(key, type);
|
||||||
if (eck) {
|
if (eck && *eck) {
|
||||||
buf_put_ecdsa_pub_key(pubkeys, *eck);
|
buf_put_ecdsa_pub_key(pubkeys, *eck);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -331,7 +332,7 @@ void buf_put_priv_key(buffer* buf, sign_key *key, enum signkey_type type) {
|
|||||||
#if DROPBEAR_ECDSA
|
#if DROPBEAR_ECDSA
|
||||||
if (signkey_is_ecdsa(type)) {
|
if (signkey_is_ecdsa(type)) {
|
||||||
ecc_key **eck = (ecc_key**)signkey_key_ptr(key, type);
|
ecc_key **eck = (ecc_key**)signkey_key_ptr(key, type);
|
||||||
if (eck) {
|
if (eck && *eck) {
|
||||||
buf_put_ecdsa_priv_key(buf, *eck);
|
buf_put_ecdsa_priv_key(buf, *eck);
|
||||||
TRACE(("leave buf_put_priv_key: ecdsa done"))
|
TRACE(("leave buf_put_priv_key: ecdsa done"))
|
||||||
return;
|
return;
|
||||||
@ -495,7 +496,7 @@ void buf_put_sign(buffer* buf, sign_key *key, enum signkey_type type,
|
|||||||
#if DROPBEAR_ECDSA
|
#if DROPBEAR_ECDSA
|
||||||
if (signkey_is_ecdsa(type)) {
|
if (signkey_is_ecdsa(type)) {
|
||||||
ecc_key **eck = (ecc_key**)signkey_key_ptr(key, type);
|
ecc_key **eck = (ecc_key**)signkey_key_ptr(key, type);
|
||||||
if (eck) {
|
if (eck && *eck) {
|
||||||
buf_put_ecdsa_sign(sigblob, *eck, data_buf);
|
buf_put_ecdsa_sign(sigblob, *eck, data_buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user