From 78269c211022336eea031e15eab761bf4957f2f3 Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Wed, 5 Jan 2011 15:10:30 +0000 Subject: [PATCH] Check result of dm_snprintf for error --- lib/locking/cluster_locking.c | 14 ++++++++------ lib/locking/file_locking.c | 20 ++++++++++++++------ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/lib/locking/cluster_locking.c b/lib/locking/cluster_locking.c index eea9974a3..8b7fe9998 100644 --- a/lib/locking/cluster_locking.c +++ b/lib/locking/cluster_locking.c @@ -409,12 +409,14 @@ int lock_resource(struct cmd_context *cmd, const char *resource, uint32_t flags) } /* If the VG name is empty then lock the unused PVs */ - if (is_orphan_vg(resource) || is_global_vg(resource) || (flags & LCK_CACHE)) - dm_snprintf(lockname, sizeof(lockname), "P_%s", - resource); - else - dm_snprintf(lockname, sizeof(lockname), "V_%s", - resource); + if (dm_snprintf(lockname, sizeof(lockname), "%c_%s", + (is_orphan_vg(resource) || + is_global_vg(resource) || + (flags & LCK_CACHE)) ? 'P' : 'V', + resource) < 0) { + log_error("Locking resource %s too long.", resource); + return 0; + } lock_scope = "VG"; clvmd_cmd = CLVMD_CMD_LOCK_VG; diff --git a/lib/locking/file_locking.c b/lib/locking/file_locking.c index 9137a30a5..d74bfd185 100644 --- a/lib/locking/file_locking.c +++ b/lib/locking/file_locking.c @@ -268,12 +268,20 @@ static int _file_lock_resource(struct cmd_context *cmd, const char *resource, if (flags & LCK_CACHE) break; - if (is_orphan_vg(resource) || is_global_vg(resource)) - dm_snprintf(lockfile, sizeof(lockfile), - "%s/P_%s", _lock_dir, resource + 1); - else - dm_snprintf(lockfile, sizeof(lockfile), - "%s/V_%s", _lock_dir, resource); + if (is_orphan_vg(resource) || is_global_vg(resource)) { + if (dm_snprintf(lockfile, sizeof(lockfile), + "%s/P_%s", _lock_dir, resource + 1) < 0) { + log_error("Too long locking filename %s/P_%s.", + _lock_dir, resource + 1); + return 0; + } + } else + if (dm_snprintf(lockfile, sizeof(lockfile), + "%s/V_%s", _lock_dir, resource) < 0) { + log_error("Too long locking filename %s/V_%s.", + _lock_dir, resource); + return 0; + } if (!_lock_file(lockfile, flags)) return_0; -- 2.43.5