if (d_pair == nullptr) {
throw std::runtime_error("Trying to compute the padding size from an invalid DNSCrypt query");
}
+ if (unpaddedLen > maxLen) {
+ throw std::runtime_error("Trying to compute the padding size for an oversized content");
+ }
DNSCryptNonceType nonce;
memcpy(nonce.data(), d_header.clientNonce.data(), d_header.clientNonce.size());
size_t requiredSize = sizeof(responseHeader) + DNSCRYPT_MAC_SIZE + response.size();
size_t maxSize = std::min(maxResponseSize, requiredSize + DNSCRYPT_MAX_RESPONSE_PADDING_SIZE);
+ if (requiredSize > maxResponseSize) {
+ return ENOBUFS;
+ }
uint16_t paddingSize = computePaddingSize(requiredSize, maxSize);
requiredSize += paddingSize;