From 5466375683a48bd650091781991d9e4facd06ba6 Mon Sep 17 00:00:00 2001 From: rpm-build Date: Fri, 26 Jun 2020 21:35:46 +0300 Subject: [PATCH] Downstream: fix covscan issue: close(fd) called twice Seems it's already fixed upstream, but by several commits, that change more things. This simple patch, just prevents the case of calling close(fd) twice Warning is: Error: USE_AFTER_FREE (CWE-416): [#def2] libusb-1.0.23/libusb/os/linux_usbfs.c:1043: closed_arg: "close(int)" closes "fd". libusb-1.0.23/libusb/os/linux_usbfs.c:1054: double_close: Calling "close(int)" closes handle "fd" which has already been closed. --- libusb/os/linux_usbfs.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libusb/os/linux_usbfs.c b/libusb/os/linux_usbfs.c index 4179b9a..537f0dd 100644 --- a/libusb/os/linux_usbfs.c +++ b/libusb/os/linux_usbfs.c @@ -1039,8 +1039,10 @@ static int initialize_device(struct libusb_device *dev, uint8_t busnum, priv->descriptors_len += r; } while (priv->descriptors_len == descriptors_size); - if (fd != wrapped_fd) + if (fd != wrapped_fd) { close(fd); + fd = -1; + } if (priv->descriptors_len < DEVICE_DESC_LENGTH) { usbi_err(ctx, "short descriptor read (%d)", @@ -1050,7 +1052,7 @@ static int initialize_device(struct libusb_device *dev, uint8_t busnum, if (sysfs_dir && sysfs_can_relate_devices) { - if (fd != wrapped_fd) + if ((fd >= 0) && (fd != wrapped_fd)) close(fd); return LIBUSB_SUCCESS; } -- 2.26.2