]> sourceware.org Git - lvm2.git/commitdiff
vgrename: use long enough buffer for path
authorZdenek Kabelac <zkabelac@redhat.com>
Wed, 29 Mar 2017 22:17:37 +0000 (00:17 +0200)
committerZdenek Kabelac <zkabelac@redhat.com>
Wed, 29 Mar 2017 22:38:41 +0000 (00:38 +0200)
Use PATH_MAX when creating buffers for rename.

WHATS_NEW
daemons/cmirrord/functions.c
tools/vgrename.c

index 63494682f4a94715c01988d913532216390b86ca..abff1c81935d873d31b9400ee2faaa1ed226b979 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.170 - 
 ==================================
+  Check and use PATH_MAX buffers when creating vgrename device paths.
 
 Version 2.02.169 - 28th March 2017
 ==================================
index 5e50b8a58aba20db0b509b8f8ea16b80909a5d5d..03f8626debb242773e25c24aab830719b5b91098 100644 (file)
@@ -377,7 +377,7 @@ static int _clog_ctr(char *uuid, uint64_t luid,
        uint32_t block_on_error = 0;
 
        int disk_log;
-       char disk_path[128];
+       char disk_path[PATH_MAX];
        int unlink_path = 0;
        long page_size;
        int pages;
index 293f63ccc13f2d5651a7b432d6705f5b6c96d65d..5c69faf266659ce98def8507da52bafb06b4ba9a 100644 (file)
@@ -38,8 +38,8 @@ static int _vgrename_single(struct cmd_context *cmd, const char *vg_name,
                            struct volume_group *vg, struct processing_handle *handle)
 {
        struct vgrename_params *vp = (struct vgrename_params *) handle->custom_handle;
-       char old_path[NAME_LEN];
-       char new_path[NAME_LEN];
+       char old_path[PATH_MAX];
+       char new_path[PATH_MAX];
        struct id id;
        const char *name;
        char *dev_dir;
@@ -136,8 +136,12 @@ static int _vgrename_single(struct cmd_context *cmd, const char *vg_name,
                goto error;
        }
 
-       sprintf(old_path, "%s%s", dev_dir, vg_name);
-       sprintf(new_path, "%s%s", dev_dir, vp->vg_name_new);
+       if ((dm_snprintf(old_path, sizeof(old_path), "%s%s", dev_dir, vg_name) < 0) ||
+           (dm_snprintf(new_path, sizeof(new_path), "%s%s", dev_dir, vp->vg_name_new) < 0)) {
+               log_error("Renaming path is too long %s/%s  %s/%s",
+                         dev_dir, vg_name, dev_dir, vp->vg_name_new);
+               goto error;
+       }
 
        if (activation() && dir_exists(old_path)) {
                log_verbose("Renaming \"%s\" to \"%s\"", old_path, new_path);
This page took 0.042968 seconds and 5 git commands to generate.