@cryptotaxi247 / netdata-1 / commits / 01c220b90

installer: update `go.d.plugin` version to v0.20.0 (#9644)

Bumps the go.d plugin version to 0.20.0, includes the Prometheus Generic Collector. Fixes a bug in dimension name / id escaping that could break the json output of the web API. Co-authored-by: Andrew Moss <1043609+amoss@users.noreply.github.com>

Ilya Mashchenko committed Aug 4, 2020 at 19:31 UTC 01c220b90e45ff05b418984647bf4a69aa147155
5 files changed +52 -26
libnetdata/buffer/buffer.c
+25
@@ -160,6 +160,31 @@ void buffer_strcat(BUFFER *wb, const char *txt)
160 }
161 }
162
163 +void buffer_strcat_jsonescape(BUFFER *wb, const char *txt)
164 +{
165 + while(*txt) {
166 + switch(*txt) {
167 + case '\\':
168 + buffer_need_bytes(wb, 2);
169 + wb->buffer[wb->len++] = '\\';
170 + wb->buffer[wb->len++] = '\\';
171 + break;
172 + case '"':
173 + buffer_need_bytes(wb, 2);
174 + wb->buffer[wb->len++] = '\\';
175 + wb->buffer[wb->len++] = '"';
176 + break;
177 + default: {
178 + buffer_need_bytes(wb, 1);
179 + wb->buffer[wb->len++] = *txt;
180 + }
181 + }
182 + txt++;
183 + }
184 +
185 + buffer_overflow_check(wb);
186 +}
187 +
188 void buffer_strcat_htmlescape(BUFFER *wb, const char *txt)
189 {
190 while(*txt) {
libnetdata/buffer/buffer.h
+1
@@ -67,6 +67,7 @@ extern void buffer_increase(BUFFER *b, size_t free_size_required);
67 extern void buffer_snprintf(BUFFER *wb, size_t len, const char *fmt, ...) PRINTFLIKE(3, 4);
68 extern void buffer_vsprintf(BUFFER *wb, const char *fmt, va_list args);
69 extern void buffer_sprintf(BUFFER *wb, const char *fmt, ...) PRINTFLIKE(2,3);
70 +extern void buffer_strcat_jsonescape(BUFFER *wb, const char *txt);
71 extern void buffer_strcat_htmlescape(BUFFER *wb, const char *txt);
72
73 extern void buffer_char_replace(BUFFER *wb, char from, char to);
packaging/go.d.checksums
+17 -17
@@ -1,17 +1,17 @@
1 -fd1403f2a5887c3979591363b12167da9fbe538e588c32f3d2425a9b117ba154 *config.tar.gz
2 -e0e563d80b097c02287fd45b4fd69dd122eb03689e41f4b6028346128723aecc *go.d.plugin-v0.19.2.darwin-386.tar.gz
3 -0cc112a8a89e67470cd03cf8c8449e943969a9ba2192bd304cc9b8d59ad6d1cc *go.d.plugin-v0.19.2.darwin-amd64.tar.gz
4 -8ce4c06a7d983e160a7ee1c974102a92276d704c6cb76f8af3e7527451a69809 *go.d.plugin-v0.19.2.freebsd-386.tar.gz
5 -72e78ef01a7f361a93787ddef70378cb1c1471698160426d4c38e54c9191c5dd *go.d.plugin-v0.19.2.freebsd-amd64.tar.gz
6 -e28f34e9108a305d3b9bf92810e6dcb738785a056cccdd6e26e41501f6631bfa *go.d.plugin-v0.19.2.freebsd-arm.tar.gz
7 -e58caf73c320f3c928ab6ec3a0753cfe5e8a0d8e5e837b0dc7ffb1b6527c831a *go.d.plugin-v0.19.2.freebsd-arm64.tar.gz
8 -3c8e754b1b7e06f92184892ceb1f9c2d3c1203e6154a21d8759439f4f91d570a *go.d.plugin-v0.19.2.linux-386.tar.gz
9 -9408354df05e65154cc660570b6e4fe7ce992a664ca8e7882e78100b0d92f415 *go.d.plugin-v0.19.2.linux-amd64.tar.gz
10 -1c3bcbeee37efb4e7181892f69a39ca5e91c109e62cd8fd91761145936567a9e *go.d.plugin-v0.19.2.linux-arm.tar.gz
11 -891f2d8a951b9c6adc2b35027cb21728a182c5e5790f706eb3cd729d734c4729 *go.d.plugin-v0.19.2.linux-arm64.tar.gz
12 -96c7c5a07908125bf07ee7e6af2f4619ceff1ebe50ec74fd739985ca98f37f61 *go.d.plugin-v0.19.2.linux-mips.tar.gz
13 -6b0a9ce0ac88c91aaa5c9dadea755b060c1629f43f3f072de0928ed55a198a0f *go.d.plugin-v0.19.2.linux-mips64.tar.gz
14 -fc9d722ee54ef1e672e88063c74779efefcbcd89051018c77a839872d6eb8be8 *go.d.plugin-v0.19.2.linux-mips64le.tar.gz
15 -24b4a64a93df78e927c23f61b3977cd9e5bf2598dfcb2a120242d87b81c5fcb7 *go.d.plugin-v0.19.2.linux-mipsle.tar.gz
16 -445a8305ab26efc046378279e3b2d4fc31a5c9ed56bdf56f0cdba5a6a7b3431e *go.d.plugin-v0.19.2.linux-ppc64.tar.gz
17 -20c60619c3ee2e0a030e9266a97b99e3b65a10ae175e4f78af92e93078adb5d5 *go.d.plugin-v0.19.2.linux-ppc64le.tar.gz
1 +3e3b40fa832d02e73de33f5b13a80b9aff5a2f092c6f20cebf2381b1715c1e61 *config.tar.gz
2 +153051d2d664e520e3ec05c50d2f701142d7c3e193139aae301e1d5f2113faca *go.d.plugin-v0.20.0.darwin-386.tar.gz
3 +2316989d57d77d9ba46cd1b7443d03446a7eb4a866bdfc76fbb0ec42db42b476 *go.d.plugin-v0.20.0.darwin-amd64.tar.gz
4 +75bfc760b277e4077b438490cbb628dc34266104428d00e948ed6d308d0937a7 *go.d.plugin-v0.20.0.freebsd-386.tar.gz
5 +8a06fd7c51dae57edb36f079328ce9dc4a7e9a858c8d4e185a37e7ac156ba5e2 *go.d.plugin-v0.20.0.freebsd-amd64.tar.gz
6 +d6c14dbc47109df1eb19a43c8ca7ff75dcc6a4ba71bcdb2bd1257bf51861e61e *go.d.plugin-v0.20.0.freebsd-arm.tar.gz
7 +557e0c3c53f38a0f9f51c2c8e46bbe4ae205551a55834f7c4d2d1a4ad2a3d486 *go.d.plugin-v0.20.0.freebsd-arm64.tar.gz
8 +b795d3d3ff5f42f978a5495e0ad98705ed46b4117a4cde4cf99ec583a215cdb0 *go.d.plugin-v0.20.0.linux-386.tar.gz
9 +137e5412215c78053e197fc93e28c2f578150f8b17f29b4f3caa96c70316a807 *go.d.plugin-v0.20.0.linux-amd64.tar.gz
10 +458fc68e0bdfb538366ff55309300523707c0815403a7284a3d42785d5cfc966 *go.d.plugin-v0.20.0.linux-arm.tar.gz
11 +41936570c103975e2c6c9ddb190bf7ef940876a6e30569a98d8e109c6c32458f *go.d.plugin-v0.20.0.linux-arm64.tar.gz
12 +e83f6a3da52fc0569409b6f0ff1c456778f8325bddc2bae00074795b0118dfa3 *go.d.plugin-v0.20.0.linux-mips.tar.gz
13 +f4fe9e837a4736f9ecb5e4049db2073851f204a2402734135ab67096b7d5fe66 *go.d.plugin-v0.20.0.linux-mips64.tar.gz
14 +473eaa2cc478f27a64de5b3301bfcdb9884712310e54424cc9b46331d361d152 *go.d.plugin-v0.20.0.linux-mips64le.tar.gz
15 +ef69608375e202d15d5fee4f5ab8e93aae392677e2b2a130fa00b43d71ad0a68 *go.d.plugin-v0.20.0.linux-mipsle.tar.gz
16 +def001309a84e44899fbc3915b266210003a2b619fe399a45398bcc4b2f48183 *go.d.plugin-v0.20.0.linux-ppc64.tar.gz
17 +0475ae9dbb44527996c992cab62ab3989cbfe47d21066c843b12edf216d063ff *go.d.plugin-v0.20.0.linux-ppc64le.tar.gz
packaging/go.d.version
+1 -1
@@ -1 +1 @@
1 -v0.19.2
1 +v0.20.0
web/api/formatters/rrdset2json.c
+8 -8
@@ -72,14 +72,14 @@ void rrdset2json(RRDSET *st, BUFFER *wb, size_t *dimensions_count, size_t *memor
72
73 memory += rd->memsize;
74
75 - buffer_sprintf(
76 - wb
77 - , "%s"
78 - "\t\t\t\t\"%s\": { \"name\": \"%s\" }"
79 - , dimensions ? ",\n" : ""
80 - , rd->id
81 - , rd->name
82 - );
75 + if (dimensions)
76 + buffer_strcat(wb, ",\n\t\t\t\t\"");
77 + else
78 + buffer_strcat(wb, "\t\t\t\t\"");
79 + buffer_strcat_jsonescape(wb, rd->id);
80 + buffer_strcat(wb, "\": { \"name\": \"");
81 + buffer_strcat_jsonescape(wb, rd->name);
82 + buffer_strcat(wb, "\" }");
83
84 dimensions++;
85 }