Loading DnsProxyListener.cpp +5 −5 Original line number Diff line number Diff line Loading @@ -1048,8 +1048,8 @@ void DnsProxyListener::ResNSendHandler::run() { uint16_t original_query_id = 0; // TODO: Handle the case which is msg contains more than one query if (!parseQuery({msg.data(), msgLen}, &original_query_id, &rr_type, &rr_name) || !setQueryId({msg.data(), msgLen}, arc4random_uniform(65536))) { if (!parseQuery(std::span(msg.data(), msgLen), &original_query_id, &rr_type, &rr_name) || !setQueryId(std::span(msg.data(), msgLen), arc4random_uniform(65536))) { // If the query couldn't be parsed, block the request. LOG(WARNING) << "ResNSendHandler::run: resnsend: from UID " << uid << ", invalid query"; sendBE32(mClient, -EINVAL); Loading @@ -1064,7 +1064,7 @@ void DnsProxyListener::ResNSendHandler::run() { initDnsEvent(&event, mNetContext); if (startQueryLimiter(uid)) { if (evaluate_domain_name(mNetContext, rr_name.c_str())) { ansLen = resolv_res_nsend(&mNetContext, {msg.data(), msgLen}, ansBuf, &rcode, ansLen = resolv_res_nsend(&mNetContext, std::span(msg.data(), msgLen), ansBuf, &rcode, static_cast<ResNsendFlags>(mFlags), &event); } else { ansLen = -EAI_SYSTEM; Loading Loading @@ -1102,7 +1102,7 @@ void DnsProxyListener::ResNSendHandler::run() { } // Restore query id if (!setQueryId({ansBuf.data(), ansLen}, original_query_id)) { if (!setQueryId(std::span(ansBuf.data(), ansLen), original_query_id)) { LOG(WARNING) << "ResNSendHandler::run: resnsend: failed to restore query id"; return; } Loading @@ -1117,7 +1117,7 @@ void DnsProxyListener::ResNSendHandler::run() { if (rr_type == ns_t_a || rr_type == ns_t_aaaa) { std::vector<std::string> ip_addrs; const int total_ip_addr_count = extractResNsendAnswers({ansBuf.data(), ansLen}, rr_type, &ip_addrs); extractResNsendAnswers(std::span(ansBuf.data(), ansLen), rr_type, &ip_addrs); reportDnsEvent(INetdEventListener::EVENT_RES_NSEND, mNetContext, latencyUs, resNSendToAiError(ansLen, rcode), event, rr_name, ip_addrs, total_ip_addr_count); Loading DnsTlsTransport.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ base::Result<void> sendUdpQuery(netdutils::IPAddress ip, uint32_t mark, return ErrnoErrorf("connect failed"); } if (send(fd, query.data(), query.size(), 0) != query.size()) { if (send(fd, query.data(), query.size(), 0) != static_cast<ptrdiff_t>(query.size())) { return ErrnoErrorf("send failed"); } Loading getaddrinfo.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -1637,7 +1637,8 @@ QueryResult doQuery(const char* name, res_target* t, ResState* res, ResState res_temp = res->clone(&event); int rcode = NOERROR; n = res_nsend(&res_temp, {buf, n}, {t->answer.data(), anslen}, &rcode, 0, sleepTimeMs); n = res_nsend(&res_temp, std::span(buf, n), std::span(t->answer.data(), anslen), &rcode, 0, sleepTimeMs); if (n < 0 || hp->rcode != NOERROR || ntohs(hp->ancount) == 0) { if (rcode != RCODE_TIMEOUT) rcode = hp->rcode; // if the query choked with EDNS0, retry without EDNS0 Loading @@ -1646,7 +1647,8 @@ QueryResult doQuery(const char* name, res_target* t, ResState* res, (res_temp.flags & RES_F_EDNS0ERR)) { LOG(INFO) << __func__ << ": retry without EDNS0"; n = res_nmkquery(QUERY, name, cl, type, {}, buf, res_temp.netcontext_flags); n = res_nsend(&res_temp, {buf, n}, {t->answer.data(), anslen}, &rcode, 0); n = res_nsend(&res_temp, std::span(buf, n), std::span(t->answer.data(), anslen), &rcode, 0); } } Loading res_cache.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -1214,7 +1214,7 @@ static void _cache_remove_oldest(Cache* cache) { return; } LOG(DEBUG) << __func__ << ": Cache full - removing oldest"; res_pquery({oldest->query, oldest->querylen}); res_pquery(std::span(oldest->query, oldest->querylen)); _cache_remove_p(cache, lookup); } Loading Loading @@ -1318,13 +1318,13 @@ ResolvCacheStatus resolv_cache_lookup(unsigned netid, span<const uint8_t> query, /* remove stale entries here */ if (now >= e->expires) { LOG(DEBUG) << __func__ << ": NOT IN CACHE (STALE ENTRY " << *lookup << "DISCARDED)"; res_pquery({e->query, e->querylen}); res_pquery(std::span(e->query, e->querylen)); _cache_remove_p(cache, lookup); return RESOLV_CACHE_NOTFOUND; } *answerlen = e->answerlen; if (e->answerlen > answer.size()) { if (e->answerlen > static_cast<ptrdiff_t>(answer.size())) { /* NOTE: we return UNSUPPORTED if the answer buffer is too short */ LOG(INFO) << __func__ << ": ANSWER TOO LONG"; return RESOLV_CACHE_UNSUPPORTED; Loading res_mkquery.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -166,7 +166,7 @@ int res_nmkquery(int op, // opcode of query /* * Initialize answer section */ if (ep - cp < 1 + RRFIXEDSZ + data.size()) return (-1); if (ep - cp < static_cast<ptrdiff_t>(1 + RRFIXEDSZ + data.size())) return (-1); *cp++ = '\0'; /* no domain name */ *reinterpret_cast<uint16_t*>(cp) = htons(type); cp += INT16SZ; Loading Loading
DnsProxyListener.cpp +5 −5 Original line number Diff line number Diff line Loading @@ -1048,8 +1048,8 @@ void DnsProxyListener::ResNSendHandler::run() { uint16_t original_query_id = 0; // TODO: Handle the case which is msg contains more than one query if (!parseQuery({msg.data(), msgLen}, &original_query_id, &rr_type, &rr_name) || !setQueryId({msg.data(), msgLen}, arc4random_uniform(65536))) { if (!parseQuery(std::span(msg.data(), msgLen), &original_query_id, &rr_type, &rr_name) || !setQueryId(std::span(msg.data(), msgLen), arc4random_uniform(65536))) { // If the query couldn't be parsed, block the request. LOG(WARNING) << "ResNSendHandler::run: resnsend: from UID " << uid << ", invalid query"; sendBE32(mClient, -EINVAL); Loading @@ -1064,7 +1064,7 @@ void DnsProxyListener::ResNSendHandler::run() { initDnsEvent(&event, mNetContext); if (startQueryLimiter(uid)) { if (evaluate_domain_name(mNetContext, rr_name.c_str())) { ansLen = resolv_res_nsend(&mNetContext, {msg.data(), msgLen}, ansBuf, &rcode, ansLen = resolv_res_nsend(&mNetContext, std::span(msg.data(), msgLen), ansBuf, &rcode, static_cast<ResNsendFlags>(mFlags), &event); } else { ansLen = -EAI_SYSTEM; Loading Loading @@ -1102,7 +1102,7 @@ void DnsProxyListener::ResNSendHandler::run() { } // Restore query id if (!setQueryId({ansBuf.data(), ansLen}, original_query_id)) { if (!setQueryId(std::span(ansBuf.data(), ansLen), original_query_id)) { LOG(WARNING) << "ResNSendHandler::run: resnsend: failed to restore query id"; return; } Loading @@ -1117,7 +1117,7 @@ void DnsProxyListener::ResNSendHandler::run() { if (rr_type == ns_t_a || rr_type == ns_t_aaaa) { std::vector<std::string> ip_addrs; const int total_ip_addr_count = extractResNsendAnswers({ansBuf.data(), ansLen}, rr_type, &ip_addrs); extractResNsendAnswers(std::span(ansBuf.data(), ansLen), rr_type, &ip_addrs); reportDnsEvent(INetdEventListener::EVENT_RES_NSEND, mNetContext, latencyUs, resNSendToAiError(ansLen, rcode), event, rr_name, ip_addrs, total_ip_addr_count); Loading
DnsTlsTransport.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ base::Result<void> sendUdpQuery(netdutils::IPAddress ip, uint32_t mark, return ErrnoErrorf("connect failed"); } if (send(fd, query.data(), query.size(), 0) != query.size()) { if (send(fd, query.data(), query.size(), 0) != static_cast<ptrdiff_t>(query.size())) { return ErrnoErrorf("send failed"); } Loading
getaddrinfo.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -1637,7 +1637,8 @@ QueryResult doQuery(const char* name, res_target* t, ResState* res, ResState res_temp = res->clone(&event); int rcode = NOERROR; n = res_nsend(&res_temp, {buf, n}, {t->answer.data(), anslen}, &rcode, 0, sleepTimeMs); n = res_nsend(&res_temp, std::span(buf, n), std::span(t->answer.data(), anslen), &rcode, 0, sleepTimeMs); if (n < 0 || hp->rcode != NOERROR || ntohs(hp->ancount) == 0) { if (rcode != RCODE_TIMEOUT) rcode = hp->rcode; // if the query choked with EDNS0, retry without EDNS0 Loading @@ -1646,7 +1647,8 @@ QueryResult doQuery(const char* name, res_target* t, ResState* res, (res_temp.flags & RES_F_EDNS0ERR)) { LOG(INFO) << __func__ << ": retry without EDNS0"; n = res_nmkquery(QUERY, name, cl, type, {}, buf, res_temp.netcontext_flags); n = res_nsend(&res_temp, {buf, n}, {t->answer.data(), anslen}, &rcode, 0); n = res_nsend(&res_temp, std::span(buf, n), std::span(t->answer.data(), anslen), &rcode, 0); } } Loading
res_cache.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -1214,7 +1214,7 @@ static void _cache_remove_oldest(Cache* cache) { return; } LOG(DEBUG) << __func__ << ": Cache full - removing oldest"; res_pquery({oldest->query, oldest->querylen}); res_pquery(std::span(oldest->query, oldest->querylen)); _cache_remove_p(cache, lookup); } Loading Loading @@ -1318,13 +1318,13 @@ ResolvCacheStatus resolv_cache_lookup(unsigned netid, span<const uint8_t> query, /* remove stale entries here */ if (now >= e->expires) { LOG(DEBUG) << __func__ << ": NOT IN CACHE (STALE ENTRY " << *lookup << "DISCARDED)"; res_pquery({e->query, e->querylen}); res_pquery(std::span(e->query, e->querylen)); _cache_remove_p(cache, lookup); return RESOLV_CACHE_NOTFOUND; } *answerlen = e->answerlen; if (e->answerlen > answer.size()) { if (e->answerlen > static_cast<ptrdiff_t>(answer.size())) { /* NOTE: we return UNSUPPORTED if the answer buffer is too short */ LOG(INFO) << __func__ << ": ANSWER TOO LONG"; return RESOLV_CACHE_UNSUPPORTED; Loading
res_mkquery.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -166,7 +166,7 @@ int res_nmkquery(int op, // opcode of query /* * Initialize answer section */ if (ep - cp < 1 + RRFIXEDSZ + data.size()) return (-1); if (ep - cp < static_cast<ptrdiff_t>(1 + RRFIXEDSZ + data.size())) return (-1); *cp++ = '\0'; /* no domain name */ *reinterpret_cast<uint16_t*>(cp) = htons(type); cp += INT16SZ; Loading