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
}