--- userspace/libsinsp/event.cpp.orig 2016-06-17 11:55:07.000000000 -0400 +++ userspace/libsinsp/event.cpp 2016-06-25 18:46:13.220961611 -0400 @@ -61,6 +61,7 @@ { m_flags = EF_NONE; m_tinfo = NULL; + m_check_id = 0; #ifdef _DEBUG m_filtered_out = false; #endif @@ -73,6 +74,7 @@ m_inspector = inspector; m_flags = EF_NONE; m_tinfo = NULL; + m_check_id = 0; #ifdef _DEBUG m_filtered_out = false; #endif --- userspace/libsinsp/event.h.orig 2016-06-17 11:55:07.000000000 -0400 +++ userspace/libsinsp/event.h 2016-06-25 18:44:54.830921592 -0400 @@ -379,7 +379,7 @@ uint16_t m_cpuid; uint64_t m_evtnum; uint32_t m_flags; - int32_t m_check_id = 0; + int32_t m_check_id; bool m_params_loaded; const struct ppm_event_info* m_info; vector m_params; --- userspace/libsinsp/sinsp.h.orig 2016-06-17 11:55:07.000000000 -0400 +++ userspace/libsinsp/sinsp.h 2016-06-25 18:51:54.626135898 -0400 @@ -851,10 +851,10 @@ std::shared_ptr m_k8s_bt; unique_ptr m_k8s_api_handler; shared_ptr>> m_k8s_collector; - bool m_k8s_api_detected = false; + bool m_k8s_api_detected; unique_ptr m_k8s_ext_handler; k8s_ext_list_ptr_t m_ext_list_ptr; - bool m_k8s_ext_detect_done = false; + bool m_k8s_ext_detect_done; #endif // HAS_CAPTURE k8s* m_k8s_client; uint64_t m_k8s_last_watch_time_ns; @@ -871,7 +871,7 @@ // True if sysdig is ran with -v. // Used by mesos and k8s objects. // - bool m_verbose_json = false; + bool m_verbose_json; // // True if the command line argument is set to show container information @@ -1052,8 +1052,8 @@ #endif int32_t m_n_proc_lookups; uint64_t m_n_proc_lookups_duration_ns; - int32_t m_max_n_proc_lookups = -1; - int32_t m_max_n_proc_socket_lookups = -1; + int32_t m_max_n_proc_lookups; + int32_t m_max_n_proc_socket_lookups; #ifdef HAS_ANALYZER vector m_tid_collisions; #endif --- userspace/libsinsp/sinsp.cpp.orig 2016-06-17 11:55:07.000000000 -0400 +++ userspace/libsinsp/sinsp.cpp 2016-06-25 18:53:28.084183609 -0400 @@ -124,11 +124,16 @@ m_file_start_offset = 0; m_flush_memory_dump = false; m_next_stats_print_time_ns = 0; + m_verbose_json = false; + m_max_n_proc_lookups = -1; + m_max_n_proc_socket_lookups = -1; // Unless the cmd line arg "-pc" or "-pcontainer" is supplied this is false m_print_container_data = false; #if defined(HAS_CAPTURE) + m_k8s_api_detected = false; + m_k8s_ext_detect_done = false; m_sysdig_pid = getpid(); #endif --- userspace/libsinsp/k8s_component.h.orig 2016-06-17 11:55:07.000000000 -0400 +++ userspace/libsinsp/k8s_component.h 2016-06-25 20:15:58.464230081 -0400 @@ -29,6 +29,8 @@ class port { public: + port(): m_port(0) {} + void set_name(const std::string& name); const std::string& get_name() const; @@ -47,7 +49,7 @@ private: std::string m_name; - uint32_t m_port = 0; + uint32_t m_port; std::string m_protocol; }; @@ -117,12 +119,14 @@ struct msg_data { - msg_reason m_reason = COMPONENT_UNKNOWN; + msg_reason m_reason; std::string m_name; std::string m_uid; std::string m_namespace; std::string m_kind; + msg_data(): m_reason(COMPONENT_UNKNOWN) {} + bool is_valid() const { return m_reason != COMPONENT_UNKNOWN; @@ -200,7 +204,7 @@ { if(item.isConvertibleTo(Json::stringValue)) { - list.emplace(item.asString()); + list.insert(item.asString()); } } } @@ -342,8 +346,8 @@ std::string m_node_name; std::string m_host_ip; std::string m_internal_ip; - int m_restart_count_tot = -1; - mutable int m_restart_count_diff = 0; + int m_restart_count_tot; + mutable int m_restart_count_diff; }; @@ -367,8 +371,8 @@ static void set_replicas(k8s_replicas_t& replicas, const Json::Value& item); protected: - int m_spec_replicas = UNKNOWN_REPLICAS; - int m_stat_replicas = UNKNOWN_REPLICAS; + int m_spec_replicas; + int m_stat_replicas; }; @@ -424,10 +428,12 @@ public: struct net_port { - uint32_t m_port = 0; + uint32_t m_port; std::string m_protocol; - uint32_t m_target_port = 0; - uint32_t m_node_port = 0; + uint32_t m_target_port; + uint32_t m_node_port; + + net_port(): m_port(0), m_target_port(0), m_node_port(0) {} }; typedef std::vector port_list; @@ -527,7 +533,7 @@ name_translation_map_t m_name_translation; std::map m_postponed_events; - bool m_force_delete = false; + bool m_force_delete; }; typedef std::vector k8s_namespaces; @@ -735,7 +741,7 @@ inline void k8s_node_t::emplace_host_ip(std::string&& host_ip) { - m_host_ips.emplace(std::move(host_ip)); + m_host_ips.insert(std::move(host_ip)); } inline std::string k8s_node_t::get_node_name() const --- userspace/libsinsp/k8s_component.cpp.orig 2016-06-17 11:55:07.000000000 -0400 +++ userspace/libsinsp/k8s_component.cpp 2016-06-25 20:17:15.024315567 -0400 @@ -427,7 +427,7 @@ const Json::Value& ip = address[entry]; if(!ip.isNull()) { - address_list.emplace(ip.asString()); + address_list.insert(ip.asString()); } } } @@ -444,7 +444,7 @@ // k8s_pod_t::k8s_pod_t(const std::string& name, const std::string& uid, const std::string& ns) : - k8s_component(COMPONENT_TYPE, name, uid, ns) + k8s_component(COMPONENT_TYPE, name, uid, ns), m_restart_count_tot(-1), m_restart_count_diff(0) { } @@ -768,7 +768,8 @@ // Daemon Set // // { "SelectingAll", "Selecting All Pods" } duplicate - } + }, + m_force_delete(false) { } --- userspace/libsinsp/uri.h.orig 2016-06-17 11:55:07.000000000 -0400 +++ userspace/libsinsp/uri.h 2016-06-25 20:26:30.103935358 -0400 @@ -53,7 +53,7 @@ std::string m_scheme, m_user, m_password, m_host, m_path, m_query; int m_port; - bool m_has_port = true; + bool m_has_port; }; inline const std::string& uri::get_scheme() const --- userspace/libsinsp/uri.cpp.orig 2016-06-17 11:55:07.000000000 -0400 +++ userspace/libsinsp/uri.cpp 2016-06-25 20:27:19.019989976 -0400 @@ -12,7 +12,7 @@ const std::string uri::SPECIAL_CHARS = "!#$&'()*+,/:;=?@[]"; const std::string uri::AMBIGUOUS_CHARS = " \"%-.<>\\^_`{|}~"; -uri::uri(std::string str) +uri::uri(std::string str): m_has_port(0) { parsed_uri p_uri = parse_uri(str.c_str()); if(p_uri.error) }; class bearer_token --- userspace/libsinsp/mesos_http.h.orig 2016-06-17 11:55:07.000000000 -0400 +++ userspace/libsinsp/mesos_http.h 2016-06-25 20:36:26.381379731 -0400 @@ -105,8 +105,8 @@ bool m_discover_lead_master; bool m_discover_marathon; //bool m_redirect = false; - std::string::size_type m_content_length = std::string::npos; - char m_redirect[CURL_MAX_HTTP_HEADER] = {0}; + std::string::size_type m_content_length; + char m_redirect[CURL_MAX_HTTP_HEADER]; string m_token; sinsp_curl_http_headers m_sync_curl_headers; --- userspace/libsinsp/mesos_http.cpp.orig 2016-06-17 11:55:07.000000000 -0400 +++ userspace/libsinsp/mesos_http.cpp 2016-06-25 20:37:03.018404617 -0400 @@ -36,7 +36,9 @@ m_is_mesos_state(url.to_string().find(mesos::default_state_api) != std::string::npos), m_discover_lead_master(discover_mesos_lead_master), m_discover_marathon(discover_marathon), + m_content_length(std::string::npos), + m_redirect({0}), m_token(token) { if(!m_sync_curl || !m_select_curl) { --- userspace/libsinsp/mesos.h.orig 2016-06-17 11:55:07.000000000 -0400 +++ userspace/libsinsp/mesos.h 2016-06-25 20:42:53.884642953 -0400 @@ -141,20 +141,20 @@ void remove_framework(const Json::Value& framework); mesos_state_t m_state; - bool m_creation_logged = false; + bool m_creation_logged; bool m_discover_mesos_leader; bool m_discover_marathon_uris; long m_timeout_ms; - bool m_verbose = false; + bool m_verbose; typedef std::map json_map_type_t; json_ptr_t m_mesos_state_json; json_map_type_t m_marathon_groups_json; json_map_type_t m_marathon_apps_json; - time_t m_last_mesos_refresh = 0; - time_t m_last_marathon_refresh = 0; - bool m_json_error = false; - bool m_testing = false; + time_t m_last_mesos_refresh; + time_t m_last_marathon_refresh; + bool m_json_error; + bool m_testing; uri::credentials_t m_mesos_credentials; uri::credentials_t m_marathon_credentials; --- userspace/libsinsp/mesos.cpp.orig 2016-06-17 11:55:07.000000000 -0400 +++ userspace/libsinsp/mesos.cpp 2016-06-25 20:43:53.976683772 -0400 @@ -7,6 +7,12 @@ #include "sinsp.h" #include "sinsp_int.h" +template struct decltype_t { + typedef T type; +}; + +#define DECLTYPE_T(expr) decltype_t::type + const mesos_component::component_map mesos::m_components = { { mesos_component::MESOS_FRAMEWORK, "framework" }, @@ -94,6 +100,12 @@ m_verbose(verbose), m_testing(false) { + m_verbose = false; + m_creation_logged = false; + m_last_mesos_refresh = 0; + m_last_marathon_refresh = 0; + m_json_error = false; + m_testing = false; #ifdef HAS_CAPTURE g_logger.log(std::string("Creating Mesos object for [" + (m_mesos_uri.empty() ? std::string("capture replay") : m_mesos_uri) + @@ -766,7 +778,7 @@ m_activated_frameworks.insert(uid.asString()); #ifdef HAS_CAPTURE if(mesos_framework::is_root_marathon(name) && - find_if(m_marathon_groups_http.begin(), m_marathon_groups_http.end(), [uid](const decltype(m_marathon_groups_http)::value_type& item) + find_if(m_marathon_groups_http.begin(), m_marathon_groups_http.end(), [uid](const DECLTYPE_T(m_marathon_groups_http)::value_type& item) { return item.second->get_framework_id() == uid.asString(); }) == m_marathon_groups_http.end()) --- userspace/libsinsp/filterchecks.h.orig 2016-06-17 11:55:07.000000000 -0400 +++ userspace/libsinsp/filterchecks.h 2016-06-25 20:47:09.469919427 -0400 @@ -131,7 +131,7 @@ virtual int32_t get_check_id(); sinsp* m_inspector; - bool m_needs_state_tracking = false; + bool m_needs_state_tracking; boolop m_boolop; cmpop m_cmpop; sinsp_field_aggregation m_aggregation; @@ -157,7 +157,7 @@ private: void set_inspector(sinsp* inspector); - int32_t m_check_id = 0; + int32_t m_check_id; friend class sinsp_filter_check_list; }; --- userspace/libsinsp/container.cpp.orig 2016-06-17 11:55:07.000000000 -0400 +++ userspace/libsinsp/container.cpp 2016-06-25 20:50:32.806255548 -0400 @@ -638,7 +638,7 @@ container->m_image = jroot["name"].asString(); for(const auto& label_entry : jroot["labels"]) { - container->m_labels.emplace(label_entry["name"].asString(), label_entry["value"].asString()); + container->m_labels.insert(make_pair(label_entry["name"].asString(), label_entry["value"].asString())); } auto version_label_it = container->m_labels.find("version"); if(version_label_it != container->m_labels.end()) --- userspace/libsinsp/fdinfo.cpp.orig 2016-06-17 11:55:07.000000000 -0400 +++ userspace/libsinsp/fdinfo.cpp 2016-06-25 20:53:35.102556890 -0400 @@ -309,7 +309,7 @@ #ifdef GATHER_INTERNAL_STATS m_inspector->m_stats.m_n_added_fds++; #endif - pair::iterator, bool> insert_res = m_table.emplace(fd, *fdinfo); + pair::iterator, bool> insert_res = m_table.insert(make_pair(fd, *fdinfo)); return &(insert_res.first->second); } else --- userspace/libsinsp/k8s_dispatcher.h.orig 2016-06-17 11:55:07.000000000 -0400 +++ userspace/libsinsp/k8s_dispatcher.h 2016-06-25 20:56:24.349836661 -0400 @@ -31,7 +31,7 @@ struct msg_data { - msg_reason m_reason = COMPONENT_UNKNOWN; + msg_reason m_reason; std::string m_name; std::string m_uid; std::string m_namespace; @@ -40,6 +40,8 @@ { return m_reason != COMPONENT_UNKNOWN; } + + msg_data(): m_reason(COMPONENT_UNKNOWN) {} }; k8s_dispatcher() = delete; --- userspace/libsinsp/user_event.cpp.orig 2016-06-17 11:55:07.000000000 -0400 +++ userspace/libsinsp/user_event.cpp 2016-06-25 21:25:43.677202917 -0400 @@ -101,7 +101,7 @@ } if(get_meta(evt.kind()) == m_list.end()) { - m_list.emplace(std::move(evt)); + m_list.insert(std::move(evt)); } } @@ -110,7 +110,7 @@ if(ci_compare_str(evt.kind(), user_event_meta_t::PERMIT_ALL)) { m_list.clear(); - m_list.emplace(std::move(evt)); + m_list.insert(std::move(evt)); return true; } user_event_meta_t loc_evt(evt); --- userspace/libsinsp/parsers.h.orig 2016-10-25 18:43:37.000000000 -0400 +++ userspace/libsinsp/parsers.h 2016-10-26 14:56:47.597630892 -0400 @@ -176,7 +176,7 @@ vector m_protodecoders; metaevents_state m_k8s_metaevents_state; - int m_k8s_capture_version = -1; + int m_k8s_capture_version; metaevents_state m_mesos_metaevents_state; stack m_tmp_events_buffer; --- userspace/libsinsp/parsers.cpp.orig 2016-10-25 18:43:37.000000000 -0400 +++ userspace/libsinsp/parsers.cpp 2016-10-26 14:59:28.449800038 -0400 @@ -56,7 +56,8 @@ sinsp_parser::sinsp_parser(sinsp *inspector) : m_inspector(inspector), m_tmp_evt(m_inspector), - m_fd_listener(NULL) + m_fd_listener(NULL), + m_k8s_capture_version(-1) { m_fake_userevt = (scap_evt*)m_fake_userevt_storage; m_inspector->m_partial_tracers_pool = new simple_lifo_queue(128); @@ -69,7 +70,8 @@ sinsp_parser::sinsp_parser(sinsp *inspector) : m_inspector(inspector), m_tmp_evt(m_inspector), - m_fd_listener(NULL) + m_fd_listener(NULL), + m_k8s_capture_version(-1) { m_fake_userevt = (scap_evt*)m_fake_userevt_storage; --- userspace/libsinsp/k8s_state.h.orig 2016-10-25 18:43:37.000000000 -0400 +++ userspace/libsinsp/k8s_state.h 2016-10-26 15:11:30.934393292 -0400 @@ -353,7 +353,7 @@ // used by to quickly lookup any component by uid component_map_t m_component_map; bool m_is_captured; - int m_capture_version = -1; + int m_capture_version; friend class k8s_dispatcher; friend class k8s_handler; --- userspace/libsinsp/sinsp_auth.h.orig 2016-10-25 18:43:37.000000000 -0400 +++ userspace/libsinsp/sinsp_auth.h 2016-10-26 15:16:38.518894867 -0400 @@ -40,7 +40,7 @@ std::string m_key; std::string m_key_passphrase; std::string m_ca_cert; - bool m_verify_peer = false; + bool m_verify_peer; }; class sinsp_bearer_token --- userspace/libsinsp/socket_handler.h.orig 2016-10-25 18:43:37.000000000 -0400 +++ userspace/libsinsp/socket_handler.h 2016-10-26 15:25:11.790901756 -0400 @@ -85,12 +85,32 @@ m_url(url), m_keep_alive(keep_alive ? std::string("Connection: keep-alive\r\n") : std::string()), m_path(path.empty() ? m_url.get_path() : path), + m_connecting(false), + m_connected(false), + m_connect_called(false), + m_connection_error(false), + m_enabled(false), + m_socket(1), m_blocking(blocking), + m_sock_err(0), + m_dns_reqs(nullptr), m_ssl(ssl), m_bt(bt), m_timeout_ms(timeout_ms), + m_json_callback(nullptr), m_request(make_request(url, http_version)), m_http_version(http_version), + m_ssl_init_complete(false), + m_ssl_context(nullptr), + m_ssl_connection(nullptr), + m_file_addr({0}), + m_serv_addr({0}), + m_sa(0), + m_sa_len(0), + m_close_on_chunked_end(true), + m_wants_send(false), + m_msg_completed(false), + m_http_parser(nullptr), m_data_limit(data_limit), m_fetching_state(fetching_state) @@ -1549,11 +1569,13 @@ struct http_parser_data { - std::string* m_data_buf = nullptr; - std::vector* m_json = nullptr; - int* m_http_response = nullptr; - bool* m_msg_completed = nullptr; - bool* m_fetching_state = nullptr; + std::string* m_data_buf; + std::vector* m_json; + int* m_http_response; + bool* m_msg_completed; + bool* m_fetching_state; + + http_parser_data(): m_data_buf(nullptr), m_json(nullptr), m_http_response(nullptr), m_msg_completed(nullptr), m_fetching_state(nullptr) {} }; static int http_body_callback(http_parser* parser, const char* data, size_t len) @@ -1672,8 +1694,8 @@ return http_reason::get(status); } - using gaicb_t = std::unique_ptr; - using dns_list_t = std::deque; + typedef std::unique_ptr gaicb_t; + typedef std::deque dns_list_t; gaicb_t make_gaicb(const std::string &host) { @@ -1689,43 +1711,43 @@ std::string m_keep_alive; std::string m_path; std::string m_address; - bool m_connecting = false; - bool m_connected = false; - bool m_connect_called = false; - bool m_connection_error = false; - bool m_enabled = false; - int m_socket = -1; - bool m_blocking = false; + bool m_connecting; + bool m_connected; + bool m_connect_called; + bool m_connection_error; + bool m_enabled; + int m_socket; + bool m_blocking; std::vector m_buf; - int m_sock_err = 0; - gaicb_t m_dns_reqs = nullptr; + int m_sock_err; + gaicb_t m_dns_reqs; static dns_list_t m_pending_dns_reqs; ssl_ptr_t m_ssl; bt_ptr_t m_bt; long m_timeout_ms; - json_callback_func_t m_json_callback = nullptr; + json_callback_func_t m_json_callback; std::string m_data_buf; std::string m_request; std::string m_http_version; std::vector m_json_filters; std::vector m_json; json_query m_jq; - bool m_ssl_init_complete = false; - SSL_CTX* m_ssl_context = nullptr; - SSL* m_ssl_connection = nullptr; + bool m_ssl_init_complete; + SSL_CTX* m_ssl_context; + SSL* m_ssl_connection; password_vec_t m_ssl_key_pass; - struct sockaddr_un m_file_addr = {0}; - struct sockaddr_in m_serv_addr = {0}; - struct sockaddr* m_sa = 0; - socklen_t m_sa_len = 0; - bool m_close_on_chunked_end = true; - bool m_wants_send = false; - int m_http_response = -1; - bool m_msg_completed = false; + struct sockaddr_un m_file_addr; + struct sockaddr_in m_serv_addr; + struct sockaddr* m_sa; + socklen_t m_sa_len; + bool m_close_on_chunked_end; + bool m_wants_send; + int m_http_response; + bool m_msg_completed; http_parser_settings m_http_parser_settings; - http_parser* m_http_parser = nullptr; + http_parser* m_http_parser; http_parser_data m_http_parser_data; - unsigned m_data_limit = 524288; // bytes + unsigned m_data_limit; // bytes // older versions of kubernetes send pretty-printed JSON by default; // that creates a problem with JSON-newline-delimit-based detection logic, @@ -1736,7 +1758,7 @@ // this flag is true by default and it remains true until the first state http // request for this handler is completed, at which point all newlines are purged // from the string and the purged buffer is posted for further processing - bool m_fetching_state = true; + bool m_fetching_state; }; template --- userspace/libsinsp/socket_collector.h.orig 2016-10-25 18:43:37.000000000 -0400 +++ userspace/libsinsp/socket_collector.h 2016-10-26 15:28:04.390192035 -0400 @@ -18,7 +18,8 @@ m_nfds(0), m_loop(do_loop), m_timeout_ms(timeout_ms), - m_stopped(false) + m_stopped(false), + m_steady_state(false) { clear_fds(); } @@ -361,11 +362,11 @@ socket_map_t m_sockets; fd_set m_infd; fd_set m_errfd; - int m_nfds = 0; - bool m_loop = false; + int m_nfds; + bool m_loop; long m_timeout_ms; - bool m_stopped = false; - bool m_steady_state = false; + bool m_stopped; + bool m_steady_state; }; #endif // HAS_CAPTURE --- userspace/libsinsp/k8s_handler.h.orig 2016-10-25 18:43:37.000000000 -0400 +++ userspace/libsinsp/k8s_handler.h 2016-10-26 15:30:09.826402994 -0400 @@ -107,9 +107,9 @@ void log_error(const msg_data& data, const Json::Value& root); void log_not_found(const msg_data& data) const; - k8s_state_t* m_state = nullptr; - bool m_state_built = false; - bool m_data_received = false; + k8s_state_t* m_state; + bool m_state_built; + bool m_data_received; static std::string ERROR_FILTER; private: @@ -145,8 +145,8 @@ std::string m_event_uri; long m_timeout_ms; std::string m_url; - bool m_req_sent = false; - bool m_resp_recvd = false; + bool m_req_sent; + bool m_resp_recvd; json_query m_jq; std::string m_http_version; ssl_ptr_t m_ssl; @@ -157,7 +157,7 @@ // this flag indicates whether handler should continue to watch after receiving // the initial state bool m_watch; - bool m_watching = false; // indication of being in watch mode + bool m_watching; // indication of being in watch mode // flag indicating whether to connect to K8s API server (no connection needed when // replaying capture) @@ -167,13 +167,13 @@ // it must have its state fully built before this handler can begin building its own state ptr_t m_dependency_handler; - bool m_blocking_socket = false; + bool m_blocking_socket; #endif // HAS_CAPTURE // limits the number of messages handled in single cycle - unsigned m_max_messages = ~0; - bool m_state_processing_started = false; + unsigned m_max_messages; + bool m_state_processing_started; event_list_t m_events; @@ -192,9 +192,9 @@ // at all (eg. there is no need to capture api or extensions detection data) // // global capture flag is checked in the k8s state call - bool m_is_captured = false; + bool m_is_captured; - bool m_connect_logged = false; + bool m_connect_logged; }; inline unsigned k8s_handler::get_max_messages() const --- userspace/libsinsp/k8s_handler.cpp.orig 2016-10-25 18:43:37.000000000 -0400 +++ userspace/libsinsp/k8s_handler.cpp 2016-10-26 15:38:23.737896659 -0400 @@ -46,6 +46,8 @@ #endif // HAS_CAPTURE unsigned max_messages, k8s_state_t* state): m_state(state), + m_state_built(false), + m_data_received(false), m_id(id + "_state"), #ifdef HAS_CAPTURE m_collector(collector), @@ -55,16 +57,21 @@ m_filter(&m_state_filter), m_timeout_ms(timeout_ms), m_url(url), + m_req_sent(false), + m_resp_recvd(false), m_http_version(http_version), m_ssl(ssl), m_bt(bt), m_watch(watch), + m_watching(false), m_connect(connect), m_dependency_handler(dependency_handler), - m_blocking_socket(blocking_socket), + m_blocking_socket(blocking_socket = false), #endif // HAS_CAPTURE - m_max_messages(max_messages), - m_is_captured(is_captured) + m_max_messages(max_messages = ~0), + m_state_processing_started(false), + m_is_captured(is_captured = false), + m_connect_logged(false) { #ifdef HAS_CAPTURE g_logger.log("Creating K8s " + name() + " (" + m_id + ") " @@ -608,7 +614,7 @@ for(struct addrinfo* p = servinfo; p != NULL; p = p->ai_next) { struct sockaddr_in* h = (struct sockaddr_in*)p->ai_addr; - ip_addrs.emplace(inet_ntoa(h->sin_addr)); + ip_addrs.insert(inet_ntoa(h->sin_addr)); } freeaddrinfo(servinfo); --- userspace/libsinsp/sinsp_curl.h.orig 2016-10-25 18:43:37.000000000 -0400 +++ userspace/libsinsp/sinsp_curl.h 2016-10-26 15:40:35.302150834 -0400 @@ -122,7 +122,7 @@ ssl::ptr_t m_ssl; bearer_token::ptr_t m_bt; bool m_debug; - char m_redirect[CURL_MAX_HTTP_HEADER] = {0}; + char m_redirect[CURL_MAX_HTTP_HEADER]; stringstream m_body; sinsp_curl_http_headers m_headers; vector m_response_headers; --- userspace/libsinsp/sinsp_curl.cpp.orig 2016-10-25 18:43:37.000000000 -0400 +++ userspace/libsinsp/sinsp_curl.cpp 2016-10-26 15:43:00.618474851 -0400 @@ -18,7 +18,7 @@ sinsp_curl::data sinsp_curl::m_config; sinsp_curl::sinsp_curl(const uri& url, long timeout_ms, bool debug): - m_curl(curl_easy_init()), m_uri(url), m_timeout_ms(timeout_ms), m_debug(debug) + m_curl(curl_easy_init()), m_uri(url), m_timeout_ms(timeout_ms), m_debug(debug), m_redirect({0}) { init(); @@ -26,7 +26,8 @@ sinsp_curl::sinsp_curl(const uri& url, const std::string& bearer_token_file, long timeout_ms, bool debug): m_curl(curl_easy_init()), m_uri(url), m_timeout_ms(timeout_ms), m_bt(new bearer_token(bearer_token_file)), - m_debug(debug) + m_debug(debug), + m_redirect({0}) { init(); } @@ -39,7 +40,8 @@ m_curl(curl_easy_init()), m_uri(url), m_timeout_ms(timeout_ms), m_ssl(new ssl(cert, key, key_passphrase, ca_cert, verify_peer, cert_type)), m_bt(new bearer_token(bearer_token_file)), - m_debug(debug) + m_debug(debug), + m_redirect({0}) { init(); } @@ -48,7 +50,8 @@ m_curl(curl_easy_init()), m_uri(url), m_timeout_ms(timeout_ms), m_ssl(p_ssl), m_bt(p_bt), - m_debug(debug) + m_debug(debug), + m_redirect({0}) { init(); } --- userspace/libsinsp/k8s_net.h.orig 2016-10-25 18:43:37.000000000 -0400 +++ userspace/libsinsp/k8s_net.h 2016-10-26 15:44:30.397675035 -0400 @@ -76,7 +76,7 @@ bt_ptr_t m_bt; bool m_stopped; handler_map_t m_handlers; - bool m_blocking_sockets = false; + bool m_blocking_sockets; filter_ptr_t m_event_filter; std::string m_machine_id; }; --- userspace/libsinsp/k8s.h.orig 2016-10-25 18:43:37.000000000 -0400 +++ userspace/libsinsp/k8s.h 2016-10-26 15:47:17.606047865 -0400 @@ -80,7 +80,7 @@ handler_map_t m_handler_map; #ifdef HAS_CAPTURE - k8s_net* m_net = nullptr; + k8s_net* m_net; #endif static k8s_component::type_map m_components; --- userspace/libsinsp/docker.h.orig 2016-10-25 18:43:37.000000000 -0400 +++ userspace/libsinsp/docker.h 2016-10-26 15:52:15.582987051 -0400 @@ -116,8 +116,8 @@ const entity_events_t m_network_events; severity_map_t m_severity_map; name_translation_map_t m_name_translation; - size_t m_event_counter = 0; - bool m_event_limit_exceeded = false; + size_t m_event_counter; + bool m_event_limit_exceeded; }; inline const std::string& docker::get_id() const --- userspace/libsinsp/docker.cpp.orig 2016-10-25 18:43:37.000000000 -0400 +++ userspace/libsinsp/docker.cpp 2016-10-26 15:53:54.538207695 -0400 @@ -112,7 +112,9 @@ { "connect", "Connected" }, { "disconnect", "Disconnected" } // { "destroy" "Destroyed" } duplicate - } + }, + m_event_counter(0), + m_event_limit_exceeded(false) { g_logger.log(std::string("Creating Docker object for " + (url.empty() ? std::string("capture replay") : url)), --- userspace/libsinsp/json_query.h.orig 2016-10-25 18:43:37.000000000 -0400 +++ userspace/libsinsp/json_query.h 2016-10-26 16:02:45.246528453 -0400 @@ -20,6 +20,7 @@ #include #include #include +#include // jq is not C++-friendly extern "C" --- userspace/libsinsp/k8s_api_handler.h.orig 2016-10-25 18:43:37.000000000 -0400 +++ userspace/libsinsp/k8s_api_handler.h 2016-10-26 16:04:54.211865284 -0400 @@ -35,7 +35,7 @@ api_list_t m_extensions; - bool m_error = false; + bool m_error; }; inline bool k8s_api_handler::error() const --- userspace/libsinsp/k8s_api_handler.cpp.orig 2016-10-25 18:43:37.000000000 -0400 +++ userspace/libsinsp/k8s_api_handler.cpp 2016-10-26 16:06:42.106147081 -0400 @@ -27,7 +27,8 @@ url, path, filter, ".", collector, http_version, 1000L, ssl, bt, false, true, std::make_shared(), blocking_socket, #endif // HAS_CAPTURE - ~0, nullptr) + ~0, nullptr), + m_error(false) { } --- userspace/libsinsp/k8s_event_handler.h.orig 2016-10-25 18:43:37.000000000 -0400 +++ userspace/libsinsp/k8s_event_handler.h 2016-10-26 16:29:13.008406254 -0400 @@ -39,6 +39,6 @@ void handle_json(Json::Value&& root); filter_ptr_t m_event_filter; - bool m_event_ignored = false; - bool m_event_limit_exceeded = false; + bool m_event_ignored; + bool m_event_limit_exceeded; }; --- userspace/libsinsp/k8s_event_handler.cpp.orig 2016-10-25 18:43:37.000000000 -0400 +++ userspace/libsinsp/k8s_event_handler.cpp 2016-10-26 16:30:33.392527121 -0400 @@ -71,7 +71,9 @@ connect, dependency_handler, blocking_socket, #endif // HAS_CAPTURE ~0, &state), - m_event_filter(event_filter) + m_event_filter(event_filter), + m_event_ignored(false), + m_event_limit_exceeded(false) { } --- userspace/libsinsp/filter.cpp.orig 2017-02-24 11:34:12.000000000 -0500 +++ userspace/libsinsp/filter.cpp 2017-02-24 13:04:34.028090551 -0500 @@ -2057,8 +2057,8 @@ if(it == m_filter_by_tag.end() || it->first != tag) { - it = m_filter_by_tag.emplace_hint(it, - std::make_pair(tag, std::list())); + it = m_filter_by_tag.insert(it, + std::make_pair(tag, std::move(std::list()))); } it->second.push_back(wrap); --- userspace/libsinsp/eventformatter.cpp.orig 2017-03-28 05:17:05.000000000 -0400 +++ userspace/libsinsp/eventformatter.cpp 2017-03-28 09:40:18.730608144 -0400 @@ -287,8 +287,8 @@ if(it == m_formatter_cache.end() || it->first != format) { - it = m_formatter_cache.emplace_hint(it, - std::make_pair(format, make_shared(m_inspector, format))); + it = m_formatter_cache.insert(it, + std::make_pair(format, std::move(make_shared(m_inspector, format)))); } return it->second->tostring(evt, res); --- userspace/libsinsp/json_error_log.cpp.orig 2018-01-18 17:17:32.000000000 -0500 +++ userspace/libsinsp/json_error_log.cpp 2018-01-19 09:50:04.424016332 -0500 @@ -89,8 +89,8 @@ if(it == m_buckets.end() || it->first != uri) { - it = m_buckets.emplace_hint(it, - std::make_pair(uri, token_bucket())); + it = m_buckets.insert(it, + std::move(std::make_pair(uri, token_bucket()))); it->second.init(m_events_rate, m_events_max_burst); } .