diff options
author | thompsa <thompsa@FreeBSD.org> | 2009-11-08 20:03:52 +0000 |
---|---|---|
committer | thompsa <thompsa@FreeBSD.org> | 2009-11-08 20:03:52 +0000 |
commit | aded7665d83d8027dd037eca5ab97e468e90f785 (patch) | |
tree | 977c6deb1e9004ec847ecd42fbc6b89e7dc790cc /lib/libusb/libusb20_ugen20.c | |
parent | ff8940c7c7df8ff8fda10c9b907363bb10fc1fcf (diff) | |
download | FreeBSD-src-aded7665d83d8027dd037eca5ab97e468e90f785.zip FreeBSD-src-aded7665d83d8027dd037eca5ab97e468e90f785.tar.gz |
- fix refcounting error during data transfer
- fix a memory leak on the USB backend
- fix invalid pointer computations (in one case memory outside the allocated
area was written in LibUSB v1.0)
- make sure memory is always initialised, also in failing cases
- add missing functions from v1.0.4
PR: usb/140325
Reported by: Robert Jenssen
Submitted by: Hans Petter Selasky
MFC After: 3 days
Diffstat (limited to 'lib/libusb/libusb20_ugen20.c')
-rw-r--r-- | lib/libusb/libusb20_ugen20.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/libusb/libusb20_ugen20.c b/lib/libusb/libusb20_ugen20.c index f9f3689..efcca63 100644 --- a/lib/libusb/libusb20_ugen20.c +++ b/lib/libusb/libusb20_ugen20.c @@ -449,6 +449,8 @@ ugen20_get_config_desc_full(struct libusb20_device *pdev, uint16_t len; int error; + /* make sure memory is initialised */ + memset(&cdesc, 0, sizeof(cdesc)); memset(&gen_desc, 0, sizeof(gen_desc)); gen_desc.ugd_data = &cdesc; @@ -468,6 +470,10 @@ ugen20_get_config_desc_full(struct libusb20_device *pdev, if (!ptr) { return (LIBUSB20_ERROR_NO_MEM); } + + /* make sure memory is initialised */ + memset(ptr, 0, len); + gen_desc.ugd_data = ptr; gen_desc.ugd_maxlen = len; |