Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/usb aubtfwl(4): Use kmem_asprintf() for firmware fil...



details:   https://anonhg.NetBSD.org/src/rev/8d7a01d7973e
branches:  trunk
changeset: 972576:8d7a01d7973e
user:      jakllsch <jakllsch%NetBSD.org@localhost>
date:      Sat May 30 17:19:45 2020 +0000

description:
aubtfwl(4): Use kmem_asprintf() for firmware file name creation.

A MAXPATHLEN+1 array of char on stack is "too much".

diffstat:

 sys/dev/usb/aubtfwl.c |  21 ++++++++++++---------
 1 files changed, 12 insertions(+), 9 deletions(-)

diffs (58 lines):

diff -r c9d3ae74bba9 -r 8d7a01d7973e sys/dev/usb/aubtfwl.c
--- a/sys/dev/usb/aubtfwl.c     Sat May 30 17:18:22 2020 +0000
+++ b/sys/dev/usb/aubtfwl.c     Sat May 30 17:19:45 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: aubtfwl.c,v 1.9 2020/03/14 02:35:33 christos Exp $ */
+/* $NetBSD: aubtfwl.c,v 1.10 2020/05/30 17:19:45 jakllsch Exp $ */
 
 /*
  * Copyright (c) 2011 Jonathan A. Kollasch
@@ -27,9 +27,10 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: aubtfwl.c,v 1.9 2020/03/14 02:35:33 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: aubtfwl.c,v 1.10 2020/05/30 17:19:45 jakllsch Exp $");
 
 #include <sys/param.h>
+#include <sys/kmem.h>
 #include <dev/usb/usb.h>
 #include <dev/usb/usbdevs.h>
 #include <dev/usb/usbdi.h>
@@ -272,7 +273,7 @@
 aubtfwl_attach_hook(device_t self)
 {
        struct aubtfwl_softc * const sc = device_private(self);
-       char firmware_name[MAXPATHLEN+1];
+       char *fw_name;
        struct ar3k_version ver;
        uint8_t state;
        int clock = 0;
@@ -292,9 +293,10 @@
                aprint_verbose_dev(self, "state is 0x%02x\n", state);
 
                if (!(state & AR3K_STATE_IS_PATCHED)) {
-                       snprintf(firmware_name, sizeof(firmware_name),
-                               "ar3k/AthrBT_0x%08x.dfu", ver.rom);
-                       error = aubtfwl_firmware_load(self, firmware_name);
+                       fw_name = kmem_asprintf("ar3k/AthrBT_0x%08x.dfu",
+                           ver.rom);
+                       error = aubtfwl_firmware_load(self, fw_name);
+                       kmem_strfree(fw_name);
 
                        if (error)
                                return;
@@ -312,9 +314,10 @@
                        break;
                }
 
-               snprintf(firmware_name, sizeof(firmware_name),
-                       "ar3k/ramps_0x%08x_%d.dfu", ver.rom, clock);
-               aubtfwl_firmware_load(self, firmware_name);
+               fw_name = kmem_asprintf("ar3k/ramps_0x%08x_%d.dfu",
+                   ver.rom, clock);
+               aubtfwl_firmware_load(self, fw_name);
+               kmem_strfree(fw_name);
 
                if ((state & AR3K_STATE_MODE_MASK) != AR3K_STATE_MODE_NORMAL) {
                        error = aubtfwl_send_command(sc, AR3K_SET_NORMAL_MODE);



Home | Main Index | Thread Index | Old Index