From 9de65dd3f43a0ee976cc01250641834d99bbfa74 Mon Sep 17 00:00:00 2001 From: Stefano Brivio Date: Fri, 7 Oct 2022 02:07:33 +0200 Subject: util: Check return value of lseek() while reading bound ports from procfs Coverity now noticed we're checking most lseek() return values, but not this. Not really relevant, but it doesn't hurt to check we can actually seek before reading lines. Signed-off-by: Stefano Brivio Reviewed-by: David Gibson --- util.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/util.c b/util.c index b366167..5b1e08a 100644 --- a/util.c +++ b/util.c @@ -311,10 +311,14 @@ void procfs_scan_listen(struct ctx *c, uint8_t proto, int ip_version, int ns, path = "/proc/net/udp6"; } - if (*fd != -1) - lseek(*fd, 0, SEEK_SET); - else if ((*fd = open(path, O_RDONLY | O_CLOEXEC)) < 0) + if (*fd != -1) { + if (lseek(*fd, 0, SEEK_SET)) { + warn("lseek() failed on %s: %s", path, strerror(errno)); + return; + } + } else if ((*fd = open(path, O_RDONLY | O_CLOEXEC)) < 0) { return; + } lineread_init(&lr, *fd); lineread_get(&lr, &line); /* throw away header */ -- cgit v1.2.3