summaryrefslogtreecommitdiffstats
path: root/lib/metadata/mirror.c
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2011-04-12 14:13:17 +0000
committerZdenek Kabelac <zkabelac@redhat.com>2011-04-12 14:13:17 +0000
commit96077265c4a5d1a270c8bf5805e36f6adc3f07ee (patch)
tree44620c60c99a2192fa0f7ff6e70ffa1cb0c65465 /lib/metadata/mirror.c
parent192ec18c76ee45e7a4b1c6920c9de4ae5c5941f0 (diff)
downloadlvm2-96077265c4a5d1a270c8bf5805e36f6adc3f07ee.tar.gz
lvm2-96077265c4a5d1a270c8bf5805e36f6adc3f07ee.tar.xz
lvm2-96077265c4a5d1a270c8bf5805e36f6adc3f07ee.zip
Replace dm_snprintf with strncpy
My previous patch fixed incorrect error check for dm_snprintf. However in this particular case - dm_snprintf has been used differently - just like strncpy + setting last char with '\0' - so the code had to return error - because the buffer was to short for whole string. Patch replaces it with real strncpy. Also test for alloca() failure is removed - as the program behaviour is rather undefined in this case - it never returns NULL.
Diffstat (limited to 'lib/metadata/mirror.c')
-rw-r--r--lib/metadata/mirror.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/lib/metadata/mirror.c b/lib/metadata/mirror.c
index 32b236cf..95d07bda 100644
--- a/lib/metadata/mirror.c
+++ b/lib/metadata/mirror.c
@@ -1785,13 +1785,10 @@ static struct logical_volume *_set_up_mirror_log(struct cmd_context *cmd,
lv_name = lv->name;
suffix = "_mlogtmp_%d";
} else if ((lv_name = strstr(lv->name, MIRROR_SYNC_LAYER))) {
- len = lv_name - lv->name + 1;
- if (!(tmp_name = alloca(len)) ||
- (dm_snprintf(tmp_name, len, "%s", lv->name) < 0)) {
- log_error("mirror log name allocation failed");
- return 0;
- }
- lv_name = tmp_name;
+ len = lv_name - lv->name;
+ tmp_name = alloca(len + 1);
+ tmp_name[len] = '\0';
+ lv_name = strncpy(tmp_name, lv->name, len);
suffix = "_mlog";
} else {
lv_name = lv->name;