From c4e4b04527b85857a1da35982033c04362c2d117 Mon Sep 17 00:00:00 2001 From: Francis Tsui Date: Tue, 12 May 2026 18:40:55 -0700 Subject: [PATCH] Fix unsigned underflow OOB read on empty cert_id. PiperOrigin-RevId: 914584854 --- .../nearby_share_certificate_manager_impl.cc | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/sharing/certificates/nearby_share_certificate_manager_impl.cc b/sharing/certificates/nearby_share_certificate_manager_impl.cc index 5797059a..56526182 100644 --- a/sharing/certificates/nearby_share_certificate_manager_impl.cc +++ b/sharing/certificates/nearby_share_certificate_manager_impl.cc @@ -186,11 +186,7 @@ void DumpCertificateId(std::stringstream& sstream, absl::string_view cert_id, } else { sstream << " Private certificates:["; } - for (int i = 0; i < cert_id.size() - 1; ++i) { - sstream << static_cast(static_cast(cert_id[i])) << ", "; - } - sstream << static_cast(static_cast(cert_id[cert_id.size() - 1])) - << "]" << std::endl; + sstream << absl::BytesToHexString(cert_id) << "]" << std::endl; } } // namespace @@ -755,7 +751,7 @@ std::string NearbyShareCertificateManagerImpl::Dump() const { certificate_storage_->GetPublicCertificateIds(); sstream << " Total count:" << ids.size() << std::endl; for (const auto& id : ids) { - DumpCertificateId(sstream, id, true); + DumpCertificateId(sstream, id, /*is_public_cert=*/true); } sstream << std::endl; @@ -768,7 +764,7 @@ std::string NearbyShareCertificateManagerImpl::Dump() const { sstream << " Total count:" << private_certs.size() << std::endl; for (const auto& cert : private_certs) { std::string id(cert.id().begin(), cert.id().end()); - DumpCertificateId(sstream, id, false); + DumpCertificateId(sstream, id, /*is_public_cert=*/false); } }