From c4d6d1c54dcd0eff701236d396d88b1fc6251768 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Wed, 31 Jul 2019 16:18:27 +0200 Subject: libblkid: fix file descriptor leak in blkid_verify() The function blkid_verify() uses private device file descriptor and uses blkid_probe_set_device() to assign the descriptor to low-level probing code. Unfortunately, close() in this case is not enough as the prober can internally open whole-disk device too. The library API has been extended so blkid_probe_set_device() deallocates and close previously used prober for whole-disk. This new functionality is used in blkid_verify() now. Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1734545 Signed-off-by: Karel Zak --- libblkid/src/verify.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'libblkid/src/verify.c') diff --git a/libblkid/src/verify.c b/libblkid/src/verify.c index dbc10f254..a78c9f8f2 100644 --- a/libblkid/src/verify.c +++ b/libblkid/src/verify.c @@ -184,9 +184,11 @@ blkid_dev blkid_verify(blkid_cache cache, blkid_dev dev) dev->bid_name, (long long)st.st_rdev, dev->bid_type)); } - blkid_reset_probe(cache->probe); + /* reset prober */ blkid_probe_reset_superblocks_filter(cache->probe); + blkid_probe_set_device(cache->probe, -1, 0, 0); close(fd); + return dev; } -- cgit v1.2.3-55-g7522