diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2011-04-12 14:13:17 +0000 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2011-04-12 14:13:17 +0000 |
commit | 96077265c4a5d1a270c8bf5805e36f6adc3f07ee (patch) | |
tree | 44620c60c99a2192fa0f7ff6e70ffa1cb0c65465 /lib/metadata/mirror.c | |
parent | 192ec18c76ee45e7a4b1c6920c9de4ae5c5941f0 (diff) | |
download | lvm2-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.c | 11 |
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; |