]> git.itanic.dy.fi Git - rrdd/blobdiff - plugin_manager.c
onewire_parser.c: Fix compiler warnings about string lengths
[rrdd] / plugin_manager.c
index 1c33951d10860f6d93e969ebc9c35fd29b0cf458..e13e01f7d11b8175c7b9e72eb1ce53f809a14e0f 100644 (file)
@@ -6,6 +6,8 @@
 #include "plugin_manager.h"
 #include "plugin.h"
 #include "debug.h"
+#include "version.h"
+#include "utils.h"
 
 static char *exec_path;
 
@@ -36,6 +38,19 @@ int load_plugin(const char *path)
                goto out;
        }
 
+       if (!info->version) {
+               pr_err("Plugin %s version info missing\n", path);
+               ret = -1;
+               goto out;
+       }
+
+       if (strcmp(RRDD_VERSION, info->version)) {
+               pr_err("Plugin %s version mismatch, expected %s, got %s\n",
+                       path, RRDD_VERSION, info->version);
+               ret = -1;
+               goto out;
+       }
+
        if (!info->init) {
                pr_err("Plugin info structure has NULL .init callback\n");
                goto out;
@@ -66,14 +81,16 @@ int load_parser_plugin(const char *name)
        int ret;
 
        strncpy(str, name, sizeof(str));
-       strncat(str, parser, sizeof(str) - 1);
+       str[sizeof(str) - 1] = '\0';
+       _strlcat(str, parser, sizeof(str));
        ret = load_plugin(str);
        if (!ret)
                return 0;
 
        strncpy(str, "./", sizeof(str));
-       strncat(str, name, sizeof(str) - 1);
-       strncat(str, parser, sizeof(str) - 1);
+       str[sizeof(str) - 1] = '\0';
+       _strlcat(str, name, sizeof(str));
+       _strlcat(str, parser, sizeof(str));
        ret = load_plugin(str);
        if (!ret)
                return 0;
@@ -82,8 +99,9 @@ int load_parser_plugin(const char *name)
                return 0;
 
        strncpy(str, exec_path, sizeof(str));
-       strncat(str, "/", sizeof(str) - 1);
-       strncat(str, name, sizeof(str) - 1);
-       strncat(str, parser, sizeof(str) - 1);
+       str[sizeof(str) - 1] = '\0';
+       _strlcat(str, "/", sizeof(str));
+       _strlcat(str, name, sizeof(str));
+       _strlcat(str, parser, sizeof(str));
        return load_plugin(str);
 }