Hi, here was a bug in libusb caused crash on my machine.
Here's a patch in attachment ;)

Regards
Vasily
From 1965523327caaae59c54bd62a581be613ec4b14d Mon Sep 17 00:00:00 2001
From: Vasily Khoruzhick <[EMAIL PROTECTED]>
Date: Sat, 15 Mar 2008 13:50:53 +0200
Subject: [PATCH] get_device_list can modify pointer passed to it with realloc,
 but this case wasn't handled and caused crash on my machine. Fixed


Signed-off-by: Vasily Khoruzhick <[EMAIL PROTECTED]>
---
 libusb/core.c           |    2 +-
 libusb/libusbi.h        |    2 +-
 libusb/os/linux_usbfs.c |    4 +++-
 3 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/libusb/core.c b/libusb/core.c
index 68d32ce..63a7ecd 100644
--- a/libusb/core.c
+++ b/libusb/core.c
@@ -134,7 +134,7 @@ API_EXPORTED int libusb_get_device_list(struct libusb_device ***list)
 	if (!discdevs)
 		return -ENOMEM;
 
-	r = usbi_backend->get_device_list(discdevs);
+	r = usbi_backend->get_device_list(&discdevs);
 	if (r < 0)
 		goto out;
 
diff --git a/libusb/libusbi.h b/libusb/libusbi.h
index 2d56d64..0ff418b 100644
--- a/libusb/libusbi.h
+++ b/libusb/libusbi.h
@@ -231,7 +231,7 @@ struct usbi_os_backend {
 	int (*init)(void);
 	void (*exit)(void);
 
-	int (*get_device_list)(struct discovered_devs *discdevs);
+	int (*get_device_list)(struct discovered_devs **discdevs);
 
 	int (*open)(struct libusb_device_handle *handle);
 	void (*close)(struct libusb_device_handle *handle);
diff --git a/libusb/os/linux_usbfs.c b/libusb/os/linux_usbfs.c
index bfd526b..a64a7e7 100644
--- a/libusb/os/linux_usbfs.c
+++ b/libusb/os/linux_usbfs.c
@@ -333,9 +333,10 @@ out:
 	return r;
 }
 
-static int op_get_device_list(struct discovered_devs *discdevs)
+static int op_get_device_list(struct discovered_devs **_discdevs)
 {
 	struct dirent *entry;
+	struct discovered_devs *discdevs = *_discdevs;
 	int r = 0;
 	DIR *buses = opendir(usbfs_path);
 	if (!buses) {
@@ -364,6 +365,7 @@ static int op_get_device_list(struct discovered_devs *discdevs)
 
 out:
 	closedir(buses);
+	*_discdevs = discdevs;
 	return r;
 }
 
-- 
1.5.4.3

_______________________________________________
fprint mailing list
[email protected]
http://lists.reactivated.net/mailman/listinfo/fprint

Reply via email to