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:
Levi Neely 2026-03-03 15:32:57 +01:00
parent d0d9ac2d77
commit e7a9f622ff
1 changed files with 7 additions and 0 deletions

View File

@ -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);