diff --git a/mesh/keyring.c b/mesh/keyring.c
index d81e5e4..6d539e7 100644
--- a/mesh/keyring.c
+++ b/mesh/keyring.c
{
const char *node_path;
char fname[PATH_MAX];
+ int len;
if (!node)
return -1;
return -1;
if (flags & O_CREAT) {
- snprintf(fname, PATH_MAX, "%s%s", node_path, key_dir);
+ len = snprintf(fname, PATH_MAX, "%s%s", node_path, key_dir);
+ if (len >= PATH_MAX)
+ return -1;
if (mkdir(fname, 0755) != 0 && errno != EEXIST)
l_error("Failed to create dir(%d): %s", errno, fname);
}
- snprintf(fname, PATH_MAX, "%s%s/%3.3x", node_path, key_dir, idx);
+ len = snprintf(fname, PATH_MAX, "%s%s/%3.3x", node_path, key_dir, idx);
+ if (len >= PATH_MAX)
+ return -1;
if (flags & O_CREAT)
return open(fname, flags, 0600);