summaryrefslogtreecommitdiff
path: root/sys/dev/usb/uvisor.c
diff options
context:
space:
mode:
authoraugustss <augustss@NetBSD.org>2005-05-11 10:02:28 +0000
committeraugustss <augustss@NetBSD.org>2005-05-11 10:02:28 +0000
commit834327c847f2fbda7bc0a66ab9b03bfe430e8a5b (patch)
treedeca746ed0890be66b11d1451a397a635406dcc6 /sys/dev/usb/uvisor.c
parent2cf84fc2837719ec5e41a418e0391deabb396753 (diff)
Don't keep the devinfo string on the stack, instead use malloc/free.
This should cure some rare stack overflows.
Diffstat (limited to 'sys/dev/usb/uvisor.c')
-rw-r--r--sys/dev/usb/uvisor.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/sys/dev/usb/uvisor.c b/sys/dev/usb/uvisor.c
index f44ec9c44a9..8cf55d8a040 100644
--- a/sys/dev/usb/uvisor.c
+++ b/sys/dev/usb/uvisor.c
@@ -1,4 +1,4 @@
-/* $NetBSD: uvisor.c,v 1.28 2005/02/27 00:27:51 perry Exp $ */
+/* $NetBSD: uvisor.c,v 1.29 2005/05/11 10:02:29 augustss Exp $ */
/*
* Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -42,7 +42,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvisor.c,v 1.28 2005/02/27 00:27:51 perry Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvisor.c,v 1.29 2005/05/11 10:02:29 augustss Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -222,7 +222,7 @@ USB_ATTACH(uvisor)
struct uvisor_connection_info coninfo;
struct uvisor_palm_connection_info palmconinfo;
usb_endpoint_descriptor_t *ed;
- char devinfo[1024];
+ char *devinfop;
char *devname = USBDEVNAME(sc->sc_dev);
int i, j, hasin, hasout, port;
usbd_status err;
@@ -245,9 +245,10 @@ USB_ATTACH(uvisor)
goto bad;
}
- usbd_devinfo(dev, 0, devinfo, sizeof(devinfo));
+ devinfop = usbd_devinfo_alloc(dev, 0);
USB_ATTACH_SETUP;
- printf("%s: %s\n", devname, devinfo);
+ printf("%s: %s\n", devname, devinfop);
+ usbd_devinfo_free(devinfop);
sc->sc_flags = uvisor_lookup(uaa->vendor, uaa->product)->uv_flags;