summaryrefslogtreecommitdiff
path: root/mesh
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2022-06-10 19:55:13 +0200
committerMarcel Holtmann <marcel@holtmann.org>2022-06-10 19:55:13 +0200
commit60f18a689474fa7d8a355d4318c22d9261ab29f3 (patch)
tree793b4caf96cb90511f3e76ded9322ab5b1e0d7c6 /mesh
parent3c7413f49c030722c9499af9b6db3d4cbac772ba (diff)
downloadbluez-60f18a689474fa7d8a355d4318c22d9261ab29f3.tar.gz
mesh: Fix issue with snprintf return value check and format-truncation error
Diffstat (limited to 'mesh')
-rw-r--r--mesh/keyring.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/mesh/keyring.c b/mesh/keyring.c
index d81e5e412..6d539e74e 100644
--- a/mesh/keyring.c
+++ b/mesh/keyring.c
@@ -39,6 +39,7 @@ static int open_key_file(struct mesh_node *node, const char *key_dir,
{
const char *node_path;
char fname[PATH_MAX];
+ int len;
if (!node)
return -1;
@@ -49,12 +50,16 @@ static int open_key_file(struct mesh_node *node, const char *key_dir,
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);