Check for empty dimension id from a plugin (#17690)
Check for empty dimension or dimension creation failure and disable plugin
Stelios Fragkakis committed
May 17, 2024 at 13:53 UTC
a33b13f66791f0777053ba6aa6336823217ee8c6
1 file changed
+4
-1
src/collectors/plugins.d/pluginsd_parser.c
+4
-1
@@ -433,7 +433,7 @@ static inline PARSER_RC pluginsd_dimension(char **words, size_t num_words, PARSE
433
RRDSET *st = pluginsd_require_scope_chart(parser, PLUGINSD_KEYWORD_DIMENSION, PLUGINSD_KEYWORD_CHART);
434
if(!st) return PLUGINSD_DISABLE_PLUGIN(parser, NULL, NULL);
435
436
- if (unlikely(!id))
436
+ if (unlikely(!id || !*id))
437
return PLUGINSD_DISABLE_PLUGIN(parser, PLUGINSD_KEYWORD_DIMENSION, "missing dimension id");
438
439
long multiplier = 1;
@@ -461,6 +461,9 @@ static inline PARSER_RC pluginsd_dimension(char **words, size_t num_words, PARSE
461
options ? options : "");
462
463
RRDDIM *rd = rrddim_add(st, id, name, multiplier, divisor, rrd_algorithm_id(algorithm));
464
+ if (unlikely(!rd))
465
+ return PLUGINSD_DISABLE_PLUGIN(parser, PLUGINSD_KEYWORD_DIMENSION, "failed to create dimension");
466
+
467
int unhide_dimension = 1;
468
469
rrddim_option_clear(rd, RRDDIM_OPTION_DONT_DETECT_RESETS_OR_OVERFLOWS);