If myread() fails, it closes the file descriptor it was reading from.
On success, it does not. The caller is always closing the file
descriptor afterward, which results in double close in the error
case. This causes an additional error:

/dev/mem: Bad file descriptor

As the caller is always taking care of closing the file descriptor,
there is no need for myread() to do it.

Signed-off-by: Jean Delvare <[email protected]>
Fixes: 458f73d58c24 ("Fix error paths in mem_chunk")
---
 util.c |    2 --
 1 file changed, 2 deletions(-)

--- dmidecode.orig/util.c       2018-08-01 10:27:05.874390642 +0200
+++ dmidecode/util.c    2018-08-01 10:27:15.950517651 +0200
@@ -59,7 +59,6 @@ static int myread(int fd, u8 *buf, size_
                {
                        if (errno != EINTR)
                        {
-                               close(fd);
                                perror(prefix);
                                return -1;
                        }
@@ -70,7 +69,6 @@ static int myread(int fd, u8 *buf, size_
 
        if (r2 != count)
        {
-               close(fd);
                fprintf(stderr, "%s: Unexpected end of file\n", prefix);
                return -1;
        }


-- 
Jean Delvare
SUSE L3 Support

_______________________________________________
https://lists.nongnu.org/mailman/listinfo/dmidecode-devel

Reply via email to