diff options
| author | augustss <augustss@NetBSD.org> | 2005-05-11 10:02:28 +0000 |
|---|---|---|
| committer | augustss <augustss@NetBSD.org> | 2005-05-11 10:02:28 +0000 |
| commit | 834327c847f2fbda7bc0a66ab9b03bfe430e8a5b (patch) | |
| tree | deca746ed0890be66b11d1451a397a635406dcc6 /sys/dev/usb/uvisor.c | |
| parent | 2cf84fc2837719ec5e41a418e0391deabb396753 (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.c | 11 |
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; |
