#include "plugin.h"
#include "debug.h"
#include "version.h"
+#include "utils.h"
static char *exec_path;
strncpy(str, name, sizeof(str));
str[sizeof(str) - 1] = '\0';
- strncat(str, parser, sizeof(str) - strlen(str) - 1);
+ _strlcat(str, parser, sizeof(str));
ret = load_plugin(str);
if (!ret)
return 0;
strncpy(str, "./", sizeof(str));
str[sizeof(str) - 1] = '\0';
- strncat(str, name, sizeof(str) - strlen(str) - 1);
- strncat(str, parser, sizeof(str) - strlen(str) - 1);
+ _strlcat(str, name, sizeof(str));
+ _strlcat(str, parser, sizeof(str));
ret = load_plugin(str);
if (!ret)
return 0;
strncpy(str, exec_path, sizeof(str));
str[sizeof(str) - 1] = '\0';
- strncat(str, "/", sizeof(str) - strlen(str) - 1);
- strncat(str, name, sizeof(str) - strlen(str) - 1);
- strncat(str, parser, sizeof(str) - strlen(str) - 1);
+ _strlcat(str, "/", sizeof(str));
+ _strlcat(str, name, sizeof(str));
+ _strlcat(str, parser, sizeof(str));
return load_plugin(str);
}
tmpfile[0] = 0;
tmp[0] = 0;
strncpy(tmpfile, image->image_filename, sizeof(tmpfile) - 1);
- strncat(tmpfile, ".tmp",
- sizeof(tmpfile) - strlen(image->image_filename) - 1);
+ _strlcat(tmpfile, ".tmp", sizeof(tmpfile));
if (image->updatestr)
updatestr = image->updatestr;
#define mutex_unlock(lock) _mutex_unlock(lock)
#define mutex_lock_acquired(lock) _mutex_lock_acquired(lock, __FILE__, __LINE__)
+static inline char *_strlcat(char *dst, const char *src, size_t len)
+{
+ strncat(dst, src, len - strnlen(dst, len) - 1);
+ dst[len - 1] = '\0';
+
+ return dst;
+}
+
static inline int mutex_init(struct mutex *mutex)
{
mutex->line = 0;