diff options
author | Ilya Mashchenko <ilya@netdata.cloud> | 2020-08-04 19:31:44 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-04 18:31:44 +0200 |
commit | 01c220b90e45ff05b418984647bf4a69aa147155 (patch) | |
tree | 6dfe9ace589c35d59214a1d409826df91308ed1c /libnetdata | |
parent | 211137df801d1b3e4d4d484a10c4ec42d8640040 (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.c | 25 | ||||
-rw-r--r-- | libnetdata/buffer/buffer.h | 1 |
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); |