From e58098be970f8671a512832fd29944c0745d7716 Mon Sep 17 00:00:00 2001 From: Razvan Becheriu Date: Wed, 28 Jun 2023 10:59:43 +0300 Subject: [PATCH] [#2831] fixed static analizer warnings --- src/bin/perfdhcp/command_options.cc | 34 ++++++++++++++--------------- src/lib/dhcp/option4_dnr.cc | 20 +++++++++++++---- src/lib/dhcp/option4_dnr.h | 6 ++--- src/lib/dns/nsec3hash.cc | 4 ++++ src/lib/http/client.cc | 4 ++-- 5 files changed, 42 insertions(+), 26 deletions(-) diff --git a/src/bin/perfdhcp/command_options.cc b/src/bin/perfdhcp/command_options.cc index a84b91ffdc..66e557814c 100644 --- a/src/bin/perfdhcp/command_options.cc +++ b/src/bin/perfdhcp/command_options.cc @@ -289,7 +289,7 @@ CommandOptions::initialize(int argc, char** argv, bool print_cmd_line) { case 'b': check(base_.size() > 3, "-b already specified," " unexpected occurrence of 5th -b"); - base_.push_back(optarg); + base_.push_back(optarg ? optarg : ""); decodeBase(base_.back()); break; @@ -303,7 +303,7 @@ CommandOptions::initialize(int argc, char** argv, bool print_cmd_line) { case 'C': clean_report_ = true; - clean_report_separator_ = optarg; + clean_report_separator_ = optarg ? optarg : ""; break; case 'd': @@ -312,7 +312,7 @@ CommandOptions::initialize(int argc, char** argv, bool print_cmd_line) { "unexpected 3rd occurrence of -d"); try { drop_time_[drop_time_set_] = - boost::lexical_cast(optarg); + boost::lexical_cast(optarg ? optarg : ""); } catch (const boost::bad_lexical_cast&) { isc_throw(isc::InvalidParameter, "value of drop time: -d" @@ -324,7 +324,7 @@ CommandOptions::initialize(int argc, char** argv, bool print_cmd_line) { break; case 'D': - drop_arg = std::string(optarg); + drop_arg = std::string(optarg ? optarg : ""); percent_loc = drop_arg.find('%'); check(max_pdrop_.size() > 1 || max_drop_.size() > 1, "values of maximum drops: -D already " @@ -369,7 +369,7 @@ CommandOptions::initialize(int argc, char** argv, bool print_cmd_line) { break; case 'g': { - auto optarg_text = std::string(optarg); + std::string optarg_text(optarg ? optarg : ""); if (optarg_text == "single") { single_thread_mode_ = true; } else if (optarg_text == "multi") { @@ -400,12 +400,12 @@ CommandOptions::initialize(int argc, char** argv, bool print_cmd_line) { case 'J': check(num_subnet_list_files >= 1, "only one -J option can be specified"); num_subnet_list_files++; - relay_addr_list_file_ = std::string(optarg); + relay_addr_list_file_ = std::string(optarg ? optarg : ""); loadRelayAddr(); break; case 'l': - localname_ = std::string(optarg); + localname_ = std::string(optarg ? optarg : ""); initIsInterface(); break; @@ -432,7 +432,7 @@ CommandOptions::initialize(int argc, char** argv, bool print_cmd_line) { case 'M': check(num_mac_list_files >= 1, "only one -M option can be specified"); num_mac_list_files++; - mac_list_file_ = std::string(optarg); + mac_list_file_ = std::string(optarg ? optarg : ""); loadMacs(); break; @@ -474,7 +474,7 @@ CommandOptions::initialize(int argc, char** argv, bool print_cmd_line) { "-4 or -6 must be explicitly specified before -o is used."); // custom option (expected format: code,hexstring) - std::string opt_text = std::string(optarg); + std::string opt_text(optarg ? optarg : ""); size_t comma_loc = opt_text.find(','); check(comma_loc == std::string::npos, "-o option must provide option code, a comma and hexstring for" @@ -596,7 +596,7 @@ CommandOptions::initialize(int argc, char** argv, bool print_cmd_line) { break; case LONG_OPT_SCENARIO: { - auto optarg_text = std::string(optarg); + std::string optarg_text(optarg ? optarg : ""); if (optarg_text == "basic") { scenario_ = Scenario::BASIC; } else if (optarg_text == "avalanche") { @@ -616,7 +616,7 @@ CommandOptions::initialize(int argc, char** argv, bool print_cmd_line) { "-A must be explicitly specified before --or is used."); // custom option (expected format: encapsulation-level:code,hexstring) - std::string opt_text = std::string(optarg); + std::string opt_text(optarg ? optarg : ""); size_t colon_loc = opt_text.find(':'); size_t comma_loc = opt_text.find(','); @@ -767,9 +767,9 @@ CommandOptions::initClientsNum() { // be able to detect negative values provided // by user. We would not detect negative values // if we casted directly to unsigned value. - long long clients_num = boost::lexical_cast(optarg); + long long clients_num = boost::lexical_cast(optarg ? optarg : ""); check(clients_num < 0, errmsg); - clients_num_ = boost::lexical_cast(optarg); + clients_num_ = boost::lexical_cast(optarg ? optarg : ""); } catch (const boost::bad_lexical_cast&) { isc_throw(isc::InvalidParameter, errmsg); } @@ -1106,7 +1106,7 @@ CommandOptions::check(bool condition, const std::string& errmsg) const { int CommandOptions::positiveInteger(const std::string& errmsg) const { try { - int value = boost::lexical_cast(optarg); + int value = boost::lexical_cast(optarg ? optarg : ""); check(value <= 0, errmsg); return (value); } catch (const boost::bad_lexical_cast&) { @@ -1117,7 +1117,7 @@ CommandOptions::positiveInteger(const std::string& errmsg) const { int CommandOptions::nonNegativeInteger(const std::string& errmsg) const { try { - int value = boost::lexical_cast(optarg); + int value = boost::lexical_cast(optarg ? optarg : ""); check(value < 0, errmsg); return (value); } catch (const boost::bad_lexical_cast&) { @@ -1127,7 +1127,7 @@ CommandOptions::nonNegativeInteger(const std::string& errmsg) const { std::string CommandOptions::nonEmptyString(const std::string& errmsg) const { - std::string sarg = optarg; + std::string sarg(optarg ? optarg : ""); if (sarg.length() == 0) { isc_throw(isc::InvalidParameter, errmsg); } @@ -1136,7 +1136,7 @@ CommandOptions::nonEmptyString(const std::string& errmsg) const { void CommandOptions::initLeaseType() { - std::string lease_type_arg = optarg; + std::string lease_type_arg(optarg ? optarg : ""); lease_type_.fromCommandLine(lease_type_arg); } diff --git a/src/lib/dhcp/option4_dnr.cc b/src/lib/dhcp/option4_dnr.cc index 2b5a774553..f1b50cb6da 100644 --- a/src/lib/dhcp/option4_dnr.cc +++ b/src/lib/dhcp/option4_dnr.cc @@ -119,7 +119,11 @@ Option4Dnr::addDnrInstance(DnrInstance& dnr_instance) { const std::unordered_set DnrInstance::FORBIDDEN_SVC_PARAMS = {"ipv4hint", "ipv6hint"}; -DnrInstance::DnrInstance(Option::Universe universe) : universe_(universe) { +DnrInstance::DnrInstance(Option::Universe universe) + : universe_(universe), dnr_instance_data_length_(0), service_priority_(0), + adn_length_(0), addr_length_(0), svc_params_length_(0), + adn_only_mode_(true), dnr_instance_data_length_size_(0), + adn_length_size_(0), addr_length_size_(0), minimal_length_(0) { initMembers(); } @@ -128,8 +132,12 @@ DnrInstance::DnrInstance(Option::Universe universe, const std::string& adn, const DnrInstance::AddressContainer& ip_addresses, const std::string& svc_params) - : universe_(universe), service_priority_(service_priority), ip_addresses_(ip_addresses), - svc_params_(svc_params) { + : universe_(universe), dnr_instance_data_length_(0), + service_priority_(service_priority), adn_length_(0), + addr_length_(0), ip_addresses_(ip_addresses), svc_params_length_(0), + adn_only_mode_(true), svc_params_(svc_params), + dnr_instance_data_length_size_(0), adn_length_size_(0), + addr_length_size_(0), minimal_length_(0) { initMembers(); setAdn(adn); checkFields(); @@ -138,7 +146,11 @@ DnrInstance::DnrInstance(Option::Universe universe, DnrInstance::DnrInstance(Option::Universe universe, const uint16_t service_priority, const std::string& adn) - : universe_(universe), service_priority_(service_priority) { + : universe_(universe), dnr_instance_data_length_(0), + service_priority_(service_priority), adn_length_(0), + addr_length_(0), svc_params_length_(0), adn_only_mode_(true), + dnr_instance_data_length_size_(0), adn_length_size_(0), + addr_length_size_(0), minimal_length_(0) { initMembers(); setAdn(adn); } diff --git a/src/lib/dhcp/option4_dnr.h b/src/lib/dhcp/option4_dnr.h index 53b08bbb01..c79b2d4478 100644 --- a/src/lib/dhcp/option4_dnr.h +++ b/src/lib/dhcp/option4_dnr.h @@ -355,7 +355,7 @@ protected: uint16_t adn_length_; /// @brief Length of included IP addresses in octets. - uint16_t addr_length_ = 0; + uint16_t addr_length_; /// @brief Vector container holding one or more IP addresses. /// @@ -366,13 +366,13 @@ protected: AddressContainer ip_addresses_; /// @brief Length of Service Parameters field in octets. - uint16_t svc_params_length_ = 0; + uint16_t svc_params_length_; /// @brief Flag stating whether ADN only mode is used or not. /// /// "Addr Length", "IP(v4/v6) Address(es)", and "Service Parameters (SvcParams)" /// fields are not present if the ADN-only mode is used. - bool adn_only_mode_ = true; + bool adn_only_mode_; /// @brief Service Parameters (SvcParams) (variable length). /// diff --git a/src/lib/dns/nsec3hash.cc b/src/lib/dns/nsec3hash.cc index 6513f2354e..64030ff62a 100644 --- a/src/lib/dns/nsec3hash.cc +++ b/src/lib/dns/nsec3hash.cc @@ -69,6 +69,10 @@ public: static_cast(algorithm_)); } + if (salt_data == NULL) { + isc_throw(BadValue, "salt data is NULL"); + } + if (salt_length > 0) { salt_data_ = static_cast(std::malloc(salt_length)); if (salt_data_ == NULL) { diff --git a/src/lib/http/client.cc b/src/lib/http/client.cc index 911843b4b0..1f139a3cd9 100644 --- a/src/lib/http/client.cc +++ b/src/lib/http/client.cc @@ -820,7 +820,7 @@ private: /// @param tls_context server TLS context of this destination /// @param max_connections maximum number of concurrent connections /// allowed for in the list URL - Destination(Url url, TlsContextPtr tls_context, size_t max_connections) + Destination(Url const& url, TlsContextPtr tls_context, size_t max_connections) : url_(url), tls_context_(tls_context), max_connections_(max_connections), connections_(), queue_(), last_queue_warn_time_(min_date_time), last_queue_size_(0) { @@ -990,7 +990,7 @@ private: /// to be growing it will emit a warning log. /// /// @param desc RequestDescriptor to queue. - void pushRequest(RequestDescriptor desc) { + void pushRequest(RequestDescriptor const& desc) { queue_.push(desc); size_t size = queue_.size(); // If the queue size is larger than the threshold and growing, issue a -- 2.47.2