1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

Fix usage of readlink

Return value of readlink limits valid string size.
Characters after returned size present some garbage to printf.
Fix it by placing '\0' on the return size value.
This commit is contained in:
Zdenek Kabelac 2011-03-13 22:52:16 +00:00
parent 2011571bf5
commit 218f657794
2 changed files with 5 additions and 2 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.85 -
===================================
Fix readlink usage inside get_primary_dev().
Use format instance mempool where possible and adequate.
Call destroy_instance for any PVs found in VG structure during vg_free call.
Add new free_pv_fid fn and use it throughout to free all attached fids.

View File

@ -287,7 +287,7 @@ int get_primary_dev(const char *sysfs_dir,
struct stat info;
FILE *fp;
uint32_t pri_maj, pri_min;
int ret = 0;
int size, ret = 0;
/* check if dev is a partition */
if (dm_snprintf(path, PATH_MAX, "%s/dev/block/%d:%d/partition",
@ -309,11 +309,13 @@ int get_primary_dev(const char *sysfs_dir,
* - basename ../../block/md0/md0 = md0
* Parent's 'dev' sysfs attribute = /sys/block/md0/dev
*/
if (readlink(dirname(path), temp_path, PATH_MAX) < 0) {
if ((size = readlink(dirname(path), temp_path, PATH_MAX)) < 0) {
log_sys_error("readlink", path);
return ret;
}
temp_path[size] = '\0';
if (dm_snprintf(path, PATH_MAX, "%s/block/%s/dev",
sysfs_dir, basename(dirname(temp_path))) < 0) {
log_error("dm_snprintf dev failed");