@cryptotaxi247 / netdata-1 / commits / 4299ff708

Protect analytics set data (#16929)

Stelios Fragkakis committed Feb 5, 2024 at 13:43 UTC 4299ff70891ca142411c663aaa8420707f2ad9fb
2 files changed +7
daemon/analytics.c
+6
@@ -116,12 +116,14 @@ void analytics_free_data(void)
116 */
117 void analytics_set_data(char **name, char *value)
118 {
119 + spinlock_lock(&analytics_data.spinlock);
120 if (*name) {
121 analytics_data.data_length -= strlen(*name);
122 freez(*name);
123 }
124 *name = strdupz(value);
125 analytics_data.data_length += strlen(*name);
126 + spinlock_unlock(&analytics_data.spinlock);
127 }
128
129 /*
@@ -130,6 +132,7 @@ void analytics_set_data(char **name, char *value)
132 void analytics_set_data_str(char **name, const char *value)
133 {
134 size_t value_string_len;
135 + spinlock_lock(&analytics_data.spinlock);
136 if (*name) {
137 analytics_data.data_length -= strlen(*name);
138 freez(*name);
@@ -138,6 +141,7 @@ void analytics_set_data_str(char **name, const char *value)
141 *name = mallocz(sizeof(char) * value_string_len);
142 snprintfz(*name, value_string_len - 1, "\"%s\"", value);
143 analytics_data.data_length += strlen(*name);
144 + spinlock_unlock(&analytics_data.spinlock);
145 }
146
147 /*
@@ -466,6 +470,8 @@ void analytics_alarms(void)
470 */
471 void analytics_misc(void)
472 {
473 + analytics_data.spinlock.locked = false;
474 +
475 #ifdef ENABLE_ACLK
476 analytics_set_data(&analytics_data.netdata_host_cloud_available, "true");
477 analytics_set_data_str(&analytics_data.netdata_host_aclk_implementation, "Next Generation");
daemon/analytics.h
+1
@@ -71,6 +71,7 @@ struct analytics_data {
71
72 size_t charts_count;
73 size_t metrics_count;
74 + SPINLOCK spinlock;
75
76 bool exporting_enabled;
77 };