]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#2831] fixed static analizer warnings
authorRazvan Becheriu <razvan@isc.org>
Wed, 28 Jun 2023 07:59:43 +0000 (10:59 +0300)
committerRazvan Becheriu <razvan@isc.org>
Wed, 28 Jun 2023 15:29:59 +0000 (18:29 +0300)
src/bin/perfdhcp/command_options.cc
src/lib/dhcp/option4_dnr.cc
src/lib/dhcp/option4_dnr.h
src/lib/dns/nsec3hash.cc
src/lib/http/client.cc

index a84b91ffdc23ca77a62f456c6c390a1d78a05aad..66e557814cd23d822bd8f1eeb1ab1489b44bd16d 100644 (file)
@@ -289,7 +289,7 @@ CommandOptions::initialize(int argc, char** argv, bool print_cmd_line) {
         case 'b':
             check(base_.size() > 3, "-b<value> already specified,"
                   " unexpected occurrence of 5th -b<value>");
-            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<value>");
             try {
                 drop_time_[drop_time_set_] =
-                    boost::lexical_cast<double>(optarg);
+                    boost::lexical_cast<double>(optarg ? optarg : "");
             } catch (const boost::bad_lexical_cast&) {
                 isc_throw(isc::InvalidParameter,
                           "value of drop time: -d<value>"
@@ -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<value> 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<long long>(optarg);
+        long long clients_num = boost::lexical_cast<long long>(optarg ? optarg : "");
         check(clients_num < 0, errmsg);
-        clients_num_ = boost::lexical_cast<uint32_t>(optarg);
+        clients_num_ = boost::lexical_cast<uint32_t>(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<int>(optarg);
+        int value = boost::lexical_cast<int>(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<int>(optarg);
+        int value = boost::lexical_cast<int>(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);
 }
 
index 2b5a774553b636cdd979dfaf6ba849392fad5f09..f1b50cb6da5e7b6c20a9d47ac4a2e24a0393af5d 100644 (file)
@@ -119,7 +119,11 @@ Option4Dnr::addDnrInstance(DnrInstance& dnr_instance) {
 
 const std::unordered_set<std::string> 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);
 }
index 53b08bbb01661be8fff55b1f41da9720650fbc52..c79b2d44784e4e7afb1a0ba9e8dd29866be4feca 100644 (file)
@@ -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).
     ///
index 6513f2354e3794d17aad89c9232a7a099ec116e3..64030ff62a7a2f9e1e5b8cef0e59606877925b07 100644 (file)
@@ -69,6 +69,10 @@ public:
                       static_cast<unsigned int>(algorithm_));
         }
 
+        if (salt_data == NULL) {
+            isc_throw(BadValue, "salt data is NULL");
+        }
+
         if (salt_length > 0) {
             salt_data_ = static_cast<uint8_t*>(std::malloc(salt_length));
             if (salt_data_ == NULL) {
index 911843b4b0ceacc20428e7148509013009339c60..1f139a3cd989fb8cae181265784fc77b7ff90485 100644 (file)
@@ -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