Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/crypto/crypto_x509.cc
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@ X509Pointer ParseCertificate(const X509CertificateSnapshot::DER& certificate) {

} // namespace

// ManagedX509 is non-copyable to prevent multiple smart pointers managing the
// same raw pointer (Coverity 367349); ownership transfer is explicit via Adopt.
ManagedX509::ManagedX509(X509Pointer cert) : cert_(std::move(cert)) {}

std::shared_ptr<ManagedX509> ManagedX509::Adopt(X509Pointer cert) {
Expand Down
2 changes: 2 additions & 0 deletions src/crypto/crypto_x509.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ class ManagedX509 final : public MemoryRetainer {
public:
static std::shared_ptr<ManagedX509> Adopt(ncrypto::X509Pointer cert);

// Prevent Coverity 367349: copy and copy-assignment are deleted to avoid
// multiple smart pointers managing the same raw pointer.
ManagedX509(const ManagedX509&) = delete;
ManagedX509& operator=(const ManagedX509&) = delete;

Expand Down
Loading