Module Name:    src
Committed By:   jakllsch
Date:           Sat May 30 17:19:45 UTC 2020

Modified Files:
        src/sys/dev/usb: aubtfwl.c

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

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


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/dev/usb/aubtfwl.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/usb/aubtfwl.c
diff -u src/sys/dev/usb/aubtfwl.c:1.9 src/sys/dev/usb/aubtfwl.c:1.10
--- src/sys/dev/usb/aubtfwl.c:1.9	Sat Mar 14 02:35:33 2020
+++ src/sys/dev/usb/aubtfwl.c	Sat May 30 17:19:45 2020
@@ -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 @@ static void
 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 @@ aubtfwl_attach_hook(device_t self)
 		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 @@ aubtfwl_attach_hook(device_t self)
 			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);

Reply via email to