Avoid that the strchr() call in this function examines uninitialized data on the stack. This patch avoids that Coverity reports the following:
CID 173252: Error handling issues (CHECKED_RETURN) "read(int, void *, size_t)" returns the number of bytes read, but it is ignored. Signed-off-by: Bart Van Assche <bart.vanass...@wdc.com> --- kpartx/lopart.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/kpartx/lopart.c b/kpartx/lopart.c index 02b29e8cf91d..69c1eda1cc5c 100644 --- a/kpartx/lopart.c +++ b/kpartx/lopart.c @@ -64,7 +64,7 @@ char *find_loop_by_file(const char *filename) DIR *dir; struct dirent *dent; char dev[64], *found = NULL, *p; - int fd; + int fd, bytes_read; struct stat statbuf; struct loop_info loopinfo; const char VIRT_BLOCK[] = "/sys/devices/virtual/block"; @@ -86,14 +86,15 @@ char *find_loop_by_file(const char *filename) if (fd < 0) continue; - if (read(fd, dev, sizeof(dev)) <= 0) { + bytes_read = read(fd, dev, sizeof(dev) - 1); + if (bytes_read <= 0) { close(fd); continue; } close(fd); - dev[sizeof(dev)-1] = '\0'; + dev[bytes_read] = '\0'; p = strchr(dev, '\n'); if (p != NULL) *p = '\0'; -- 2.16.2 -- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel