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