summaryrefslogtreecommitdiffstats
path: root/shlibs/blkid/src/partitions
diff options
context:
space:
mode:
authorKarel Zak2011-05-18 11:57:17 +0200
committerKarel Zak2011-05-18 11:57:17 +0200
commit90e9fcda3bb3a215f027fc66c1182a18e0746972 (patch)
treecd10e1fd1fe586cf3d08287c82f30cd7e4edce72 /shlibs/blkid/src/partitions
parentbuild-sys: disable lib/ at.c tests building (diff)
downloadkernel-qcow2-util-linux-90e9fcda3bb3a215f027fc66c1182a18e0746972.tar.gz
kernel-qcow2-util-linux-90e9fcda3bb3a215f027fc66c1182a18e0746972.tar.xz
kernel-qcow2-util-linux-90e9fcda3bb3a215f027fc66c1182a18e0746972.zip
lib: [sysfs.c] make sysfs_read_* function more robust
The functions does not modify result if the requested sysfs attribute does not exist. Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'shlibs/blkid/src/partitions')
-rw-r--r--shlibs/blkid/src/partitions/partitions.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/shlibs/blkid/src/partitions/partitions.c b/shlibs/blkid/src/partitions/partitions.c
index 2ac297a1c..060461d27 100644
--- a/shlibs/blkid/src/partitions/partitions.c
+++ b/shlibs/blkid/src/partitions/partitions.c
@@ -892,16 +892,20 @@ blkid_partition blkid_partlist_devno_to_partition(blkid_partlist ls, dev_t devno
{
struct sysfs_cxt sysfs;
uint64_t start, size;
- int i;
+ int i, rc;
if (sysfs_init(&sysfs, devno, NULL))
return NULL;
- start = sysfs_read_u64(&sysfs, "start");
- size = sysfs_read_u64(&sysfs, "size");
+ rc = sysfs_read_u64(&sysfs, "start", &start);
+ if (!rc)
+ rc = sysfs_read_u64(&sysfs, "size", &size);
sysfs_deinit(&sysfs);
+ if (rc)
+ return NULL;
+
for (i = 0; i < ls->nparts; i++) {
blkid_partition par = &ls->parts[i];