From 4a2221b8782fdb9c3d76bdd4a8ea342942e038eb Mon Sep 17 00:00:00 2001 From: Jon Siwek Date: Thu, 14 May 2020 23:31:47 -0700 Subject: [PATCH] Deprecate OpaqueVal/HashVal ctors that take OpaqueType* Replaced with ones that take IntrusivePtr --- src/OpaqueVal.cc | 21 +++++++++------------ src/OpaqueVal.h | 6 +++++- src/Type.h | 20 ++++++++++---------- src/broker/Data.cc | 10 +++++----- src/broker/Data.h | 10 +++++----- src/broker/Manager.cc | 12 ++++++------ src/broker/Store.cc | 2 +- src/broker/Store.h | 2 +- src/zeek-setup.cc | 40 ++++++++++++++++++++-------------------- 9 files changed, 62 insertions(+), 61 deletions(-) diff --git a/src/OpaqueVal.cc b/src/OpaqueVal.cc index 5f561ae9f5..703efba33b 100644 --- a/src/OpaqueVal.cc +++ b/src/OpaqueVal.cc @@ -37,9 +37,11 @@ OpaqueMgr* OpaqueMgr::mgr() return &mgr; } -OpaqueVal::OpaqueVal(OpaqueType* t) : Val(IntrusivePtr{NewRef{}, t}) - { - } +OpaqueVal::OpaqueVal(OpaqueType* t) : OpaqueVal({NewRef{}, t}) + {} + +OpaqueVal::OpaqueVal(IntrusivePtr t) : Val(std::move(t)) + {} OpaqueVal::~OpaqueVal() { @@ -204,11 +206,14 @@ IntrusivePtr HashVal::DoGet() return val_mgr->EmptyString(); } -HashVal::HashVal(OpaqueType* t) : OpaqueVal(t) +HashVal::HashVal(IntrusivePtr t) : OpaqueVal(std::move(t)) { valid = false; } +HashVal::HashVal(OpaqueType* t) : HashVal({NewRef{}, t}) + {} + MD5Val::MD5Val() : HashVal(md5_type) { } @@ -700,14 +705,6 @@ BloomFilterVal::BloomFilterVal() bloom_filter = nullptr; } -BloomFilterVal::BloomFilterVal(OpaqueType* t) - : OpaqueVal(t) - { - type = nullptr; - hash = nullptr; - bloom_filter = nullptr; - } - BloomFilterVal::BloomFilterVal(probabilistic::BloomFilter* bf) : OpaqueVal(bloomfilter_type) { diff --git a/src/OpaqueVal.h b/src/OpaqueVal.h index 6ad65a4df3..6071dbf951 100644 --- a/src/OpaqueVal.h +++ b/src/OpaqueVal.h @@ -87,7 +87,9 @@ private: */ class OpaqueVal : public Val { public: + [[deprecated("Remove in v4.1. Construct from IntrusivePtr instead.")]] explicit OpaqueVal(OpaqueType* t); + explicit OpaqueVal(IntrusivePtr t); ~OpaqueVal() override; /** @@ -183,7 +185,10 @@ protected: static void digest_one(EVP_MD_CTX* h, const IntrusivePtr& v); HashVal() { valid = false; } + + [[deprecated("Remove in v4.1. Construct from IntrusivePtr instead.")]] explicit HashVal(OpaqueType* t); + explicit HashVal(IntrusivePtr t); virtual bool DoInit(); virtual bool DoFeed(const void* data, size_t size); @@ -314,7 +319,6 @@ public: protected: friend class Val; BloomFilterVal(); - explicit BloomFilterVal(OpaqueType* t); DECLARE_OPAQUE_VALUE(BloomFilterVal) private: diff --git a/src/Type.h b/src/Type.h index 0351c8a6ee..ac537577e3 100644 --- a/src/Type.h +++ b/src/Type.h @@ -769,16 +769,16 @@ protected: IntrusivePtr yield_type; }; -extern OpaqueType* md5_type; -extern OpaqueType* sha1_type; -extern OpaqueType* sha256_type; -extern OpaqueType* entropy_type; -extern OpaqueType* cardinality_type; -extern OpaqueType* topk_type; -extern OpaqueType* bloomfilter_type; -extern OpaqueType* x509_opaque_type; -extern OpaqueType* ocsp_resp_opaque_type; -extern OpaqueType* paraglob_type; +extern IntrusivePtr md5_type; +extern IntrusivePtr sha1_type; +extern IntrusivePtr sha256_type; +extern IntrusivePtr entropy_type; +extern IntrusivePtr cardinality_type; +extern IntrusivePtr topk_type; +extern IntrusivePtr bloomfilter_type; +extern IntrusivePtr x509_opaque_type; +extern IntrusivePtr ocsp_resp_opaque_type; +extern IntrusivePtr paraglob_type; // Returns the basic (non-parameterized) type with the given type. const IntrusivePtr& base_type(TypeTag tag); diff --git a/src/broker/Data.cc b/src/broker/Data.cc index 395afc4cc1..f6f958d6a6 100644 --- a/src/broker/Data.cc +++ b/src/broker/Data.cc @@ -17,11 +17,11 @@ using namespace std; -OpaqueType* bro_broker::opaque_of_data_type; -OpaqueType* bro_broker::opaque_of_set_iterator; -OpaqueType* bro_broker::opaque_of_table_iterator; -OpaqueType* bro_broker::opaque_of_vector_iterator; -OpaqueType* bro_broker::opaque_of_record_iterator; +IntrusivePtr bro_broker::opaque_of_data_type; +IntrusivePtr bro_broker::opaque_of_set_iterator; +IntrusivePtr bro_broker::opaque_of_table_iterator; +IntrusivePtr bro_broker::opaque_of_vector_iterator; +IntrusivePtr bro_broker::opaque_of_record_iterator; BroType* bro_broker::DataVal::script_data_type = nullptr; diff --git a/src/broker/Data.h b/src/broker/Data.h index cf5f06b90d..d511581ba1 100644 --- a/src/broker/Data.h +++ b/src/broker/Data.h @@ -12,11 +12,11 @@ class ODesc; namespace bro_broker { -extern OpaqueType* opaque_of_data_type; -extern OpaqueType* opaque_of_set_iterator; -extern OpaqueType* opaque_of_table_iterator; -extern OpaqueType* opaque_of_vector_iterator; -extern OpaqueType* opaque_of_record_iterator; +extern IntrusivePtr opaque_of_data_type; +extern IntrusivePtr opaque_of_set_iterator; +extern IntrusivePtr opaque_of_table_iterator; +extern IntrusivePtr opaque_of_vector_iterator; +extern IntrusivePtr opaque_of_record_iterator; /** * Convert a broker port protocol to a bro port protocol. diff --git a/src/broker/Manager.cc b/src/broker/Manager.cc index b60ceed282..446ac93fd2 100644 --- a/src/broker/Manager.cc +++ b/src/broker/Manager.cc @@ -151,12 +151,12 @@ void Manager::InitPostScript() log_id_type = zeek::id::find_type("Log::ID")->AsEnumType(); writer_id_type = zeek::id::find_type("Log::Writer")->AsEnumType(); - opaque_of_data_type = new OpaqueType("Broker::Data"); - opaque_of_set_iterator = new OpaqueType("Broker::SetIterator"); - opaque_of_table_iterator = new OpaqueType("Broker::TableIterator"); - opaque_of_vector_iterator = new OpaqueType("Broker::VectorIterator"); - opaque_of_record_iterator = new OpaqueType("Broker::RecordIterator"); - opaque_of_store_handle = new OpaqueType("Broker::Store"); + opaque_of_data_type = make_intrusive("Broker::Data"); + opaque_of_set_iterator = make_intrusive("Broker::SetIterator"); + opaque_of_table_iterator = make_intrusive("Broker::TableIterator"); + opaque_of_vector_iterator = make_intrusive("Broker::VectorIterator"); + opaque_of_record_iterator = make_intrusive("Broker::RecordIterator"); + opaque_of_store_handle = make_intrusive("Broker::Store"); vector_of_data_type = make_intrusive(zeek::id::find_type("Broker::Data")); // Register as a "dont-count" source first, we may change that later. diff --git a/src/broker/Store.cc b/src/broker/Store.cc index c66b993ebd..e763e468ba 100644 --- a/src/broker/Store.cc +++ b/src/broker/Store.cc @@ -5,7 +5,7 @@ namespace bro_broker { -OpaqueType* opaque_of_store_handle; +IntrusivePtr opaque_of_store_handle; EnumVal* query_status(bool success) { diff --git a/src/broker/Store.h b/src/broker/Store.h index b439d39e0f..be35c78254 100644 --- a/src/broker/Store.h +++ b/src/broker/Store.h @@ -11,7 +11,7 @@ namespace bro_broker { -extern OpaqueType* opaque_of_store_handle; +extern IntrusivePtr opaque_of_store_handle; /** * Create a Broker::QueryStatus value. diff --git a/src/zeek-setup.cc b/src/zeek-setup.cc index 14cf82fe25..fdbfbe7ec7 100644 --- a/src/zeek-setup.cc +++ b/src/zeek-setup.cc @@ -113,16 +113,16 @@ vector params; set requested_plugins; const char* proc_status_file = nullptr; -OpaqueType* md5_type = nullptr; -OpaqueType* sha1_type = nullptr; -OpaqueType* sha256_type = nullptr; -OpaqueType* entropy_type = nullptr; -OpaqueType* cardinality_type = nullptr; -OpaqueType* topk_type = nullptr; -OpaqueType* bloomfilter_type = nullptr; -OpaqueType* x509_opaque_type = nullptr; -OpaqueType* ocsp_resp_opaque_type = nullptr; -OpaqueType* paraglob_type = nullptr; +IntrusivePtr md5_type; +IntrusivePtr sha1_type; +IntrusivePtr sha256_type; +IntrusivePtr entropy_type; +IntrusivePtr cardinality_type; +IntrusivePtr topk_type; +IntrusivePtr bloomfilter_type; +IntrusivePtr x509_opaque_type; +IntrusivePtr ocsp_resp_opaque_type; +IntrusivePtr paraglob_type; // Keep copy of command line int bro_argc; @@ -592,16 +592,16 @@ zeek::detail::SetupResult zeek::detail::setup(int argc, char** argv, init_event_handlers(); - md5_type = new OpaqueType("md5"); - sha1_type = new OpaqueType("sha1"); - sha256_type = new OpaqueType("sha256"); - entropy_type = new OpaqueType("entropy"); - cardinality_type = new OpaqueType("cardinality"); - topk_type = new OpaqueType("topk"); - bloomfilter_type = new OpaqueType("bloomfilter"); - x509_opaque_type = new OpaqueType("x509"); - ocsp_resp_opaque_type = new OpaqueType("ocsp_resp"); - paraglob_type = new OpaqueType("paraglob"); + md5_type = make_intrusive("md5"); + sha1_type = make_intrusive("sha1"); + sha256_type = make_intrusive("sha256"); + entropy_type = make_intrusive("entropy"); + cardinality_type = make_intrusive("cardinality"); + topk_type = make_intrusive("topk"); + bloomfilter_type = make_intrusive("bloomfilter"); + x509_opaque_type = make_intrusive("x509"); + ocsp_resp_opaque_type = make_intrusive("ocsp_resp"); + paraglob_type = make_intrusive("paraglob"); // The leak-checker tends to produce some false // positives (memory which had already been