From: Remi Gacogne Date: Sat, 3 Aug 2019 22:13:47 +0000 (+0200) Subject: dnsdist: Fix signedness issue in isEDNSOptionInOpt() X-Git-Tag: dnsdist-1.4.0-rc1~12^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=db33e7b11f3e289e3c8c012be4273736073693f3;p=thirdparty%2Fpdns.git dnsdist: Fix signedness issue in isEDNSOptionInOpt() --- diff --git a/pdns/dnsdist-ecs.cc b/pdns/dnsdist-ecs.cc index 5e8974d698..67fc573372 100644 --- a/pdns/dnsdist-ecs.cc +++ b/pdns/dnsdist-ecs.cc @@ -492,7 +492,7 @@ bool isEDNSOptionInOpt(const std::string& packet, const size_t optStart, const s return false; } size_t p = optStart + 9; - uint16_t rdLen = (0x100*packet.at(p) + packet.at(p+1)); + uint16_t rdLen = (0x100*static_cast(packet.at(p)) + static_cast(packet.at(p+1))); p += sizeof(rdLen); if (rdLen > (optLen - optRecordMinimumSize)) { return false; @@ -500,9 +500,9 @@ bool isEDNSOptionInOpt(const std::string& packet, const size_t optStart, const s size_t rdEnd = p + rdLen; while ((p + 4) <= rdEnd) { - const uint16_t optionCode = 0x100*packet.at(p) + packet.at(p+1); + const uint16_t optionCode = 0x100*static_cast(packet.at(p)) + static_cast(packet.at(p+1)); p += sizeof(optionCode); - const uint16_t optionLen = 0x100*packet.at(p) + packet.at(p+1); + const uint16_t optionLen = 0x100*static_cast(packet.at(p)) + static_cast(packet.at(p+1)); p += sizeof(optionLen); if ((p + optionLen) > rdEnd) {