From 60f18a689474fa7d8a355d4318c22d9261ab29f3 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Fri, 10 Jun 2022 19:55:13 +0200 Subject: mesh: Fix issue with snprintf return value check and format-truncation error --- mesh/keyring.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'mesh') 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); -- cgit v1.2.1