Add bounds check in trim_der_key() before memcpy
Verify correct_len <= *keylen before reading from keydata buffer. Log error and return if ASN.1 length exceeds actual buffer size. Fixes #237
This commit is contained in:
parent
d0d9ac2d77
commit
e7a9f622ff
|
|
@ -620,6 +620,13 @@ static void trim_der_key(unsigned char *keydata, size_t *keylen) {
|
|||
}
|
||||
header_size = p - keydata;
|
||||
correct_len = header_size + len;
|
||||
if (correct_len > *keylen) {
|
||||
pdbg_logf(D_ERROR, "ASN.1 length %zu exceeds buffer size %zu", correct_len, *keylen);
|
||||
return;
|
||||
}
|
||||
if (correct_len > *keylen) {
|
||||
return;
|
||||
}
|
||||
trimmed = malloc(correct_len);
|
||||
if (!trimmed) return;
|
||||
memcpy(trimmed, keydata, correct_len);
|
||||
|
|
|
|||
Loading…
Reference in New Issue