diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2012-02-08 11:17:34 +0000 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2012-02-08 11:17:34 +0000 |
commit | 0154bcf0a7f0eac3452ef271b4de8811e6128296 (patch) | |
tree | 0a9362a89152a34b2545e7df44e955c0adef96df /lib/locking/file_locking.c | |
parent | 1a39fa0073a6851ff6681ece41a1ceadb2bd2546 (diff) | |
download | lvm2-0154bcf0a7f0eac3452ef271b4de8811e6128296.tar.gz lvm2-0154bcf0a7f0eac3452ef271b4de8811e6128296.tar.xz lvm2-0154bcf0a7f0eac3452ef271b4de8811e6128296.zip |
Check that whole locking_dir fits _lock_dir buffer
Diffstat (limited to 'lib/locking/file_locking.c')
-rw-r--r-- | lib/locking/file_locking.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/locking/file_locking.c b/lib/locking/file_locking.c index 3ecea8c9..6d773701 100644 --- a/lib/locking/file_locking.c +++ b/lib/locking/file_locking.c @@ -337,6 +337,7 @@ int init_file_locking(struct locking_type *locking, struct cmd_context *cmd, int suppress_messages) { int r; + const char *locking_dir; locking->lock_resource = _file_lock_resource; locking->reset_locking = _reset_file_locking; @@ -344,9 +345,14 @@ int init_file_locking(struct locking_type *locking, struct cmd_context *cmd, locking->flags = 0; /* Get lockfile directory from config file */ - strncpy(_lock_dir, find_config_tree_str(cmd, "global/locking_dir", - DEFAULT_LOCK_DIR), - sizeof(_lock_dir)); + locking_dir = find_config_tree_str(cmd, "global/locking_dir", + DEFAULT_LOCK_DIR); + if (strlen(locking_dir) >= sizeof(_lock_dir)) { + log_error("Path for locking_dir %s is invalid.", locking_dir); + return 0; + } + + strcpy(_lock_dir, locking_dir); _prioritise_write_locks = find_config_tree_bool(cmd, "global/prioritise_write_locks", |