On Thu, 2018-03-01 at 11:29 -0800, Bart Van Assche wrote: > 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.vanassche@xxxxxxx> Reviewed-by: Martin Wilck <mwilck@xxxxxxxx> > --- > 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'; -- Dr. Martin Wilck <mwilck@xxxxxxxx>, Tel. +49 (0)911 74053 2107 SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg) -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel