summaryrefslogtreecommitdiffstats
path: root/libnetdata
diff options
context:
space:
mode:
authorIlya Mashchenko <ilya@netdata.cloud>2020-08-04 19:31:44 +0300
committerGitHub <noreply@github.com>2020-08-04 18:31:44 +0200
commit01c220b90e45ff05b418984647bf4a69aa147155 (patch)
tree6dfe9ace589c35d59214a1d409826df91308ed1c /libnetdata
parent211137df801d1b3e4d4d484a10c4ec42d8640040 (diff)
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>
Diffstat (limited to 'libnetdata')
-rw-r--r--libnetdata/buffer/buffer.c25
-rw-r--r--libnetdata/buffer/buffer.h1
2 files changed, 26 insertions, 0 deletions
diff --git a/libnetdata/buffer/buffer.c b/libnetdata/buffer/buffer.c
index 50672324bd..c37da21e18 100644
--- a/libnetdata/buffer/buffer.c
+++ b/libnetdata/buffer/buffer.c
@@ -160,6 +160,31 @@ void buffer_strcat(BUFFER *wb, const char *txt)
}
}
+void buffer_strcat_jsonescape(BUFFER *wb, const char *txt)
+{
+ while(*txt) {
+ switch(*txt) {
+ case '\\':
+ buffer_need_bytes(wb, 2);
+ wb->buffer[wb->len++] = '\\';
+ wb->buffer[wb->len++] = '\\';
+ break;
+ case '"':
+ buffer_need_bytes(wb, 2);
+ wb->buffer[wb->len++] = '\\';
+ wb->buffer[wb->len++] = '"';
+ break;
+ default: {
+ buffer_need_bytes(wb, 1);
+ wb->buffer[wb->len++] = *txt;
+ }
+ }
+ txt++;
+ }
+
+ buffer_overflow_check(wb);
+}
+
void buffer_strcat_htmlescape(BUFFER *wb, const char *txt)
{
while(*txt) {
diff --git a/libnetdata/buffer/buffer.h b/libnetdata/buffer/buffer.h
index 8e431bfd53..d50910c51c 100644
--- a/libnetdata/buffer/buffer.h
+++ b/libnetdata/buffer/buffer.h
@@ -67,6 +67,7 @@ extern void buffer_increase(BUFFER *b, size_t free_size_required);
extern void buffer_snprintf(BUFFER *wb, size_t len, const char *fmt, ...) PRINTFLIKE(3, 4);
extern void buffer_vsprintf(BUFFER *wb, const char *fmt, va_list args);
extern void buffer_sprintf(BUFFER *wb, const char *fmt, ...) PRINTFLIKE(2,3);
+extern void buffer_strcat_jsonescape(BUFFER *wb, const char *txt);
extern void buffer_strcat_htmlescape(BUFFER *wb, const char *txt);
extern void buffer_char_replace(BUFFER *wb, char from, char to);