diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2011-01-05 15:10:30 +0000 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2011-01-05 15:10:30 +0000 |
commit | 2d6e83ea19d98832bb6f3726b3a19190fe5d779b (patch) | |
tree | 9a2b54456ba5d7aae927c088c018cbc170b31775 /lib/locking/file_locking.c | |
parent | 5fc79ef6dcec6751ef0d62b6db9e446208509636 (diff) | |
download | lvm2-2d6e83ea19d98832bb6f3726b3a19190fe5d779b.tar.gz lvm2-2d6e83ea19d98832bb6f3726b3a19190fe5d779b.tar.xz lvm2-2d6e83ea19d98832bb6f3726b3a19190fe5d779b.zip |
Check result of dm_snprintf for error
Diffstat (limited to 'lib/locking/file_locking.c')
-rw-r--r-- | lib/locking/file_locking.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/lib/locking/file_locking.c b/lib/locking/file_locking.c index 9137a30a..d74bfd18 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; |