[source] ar71xx: mikrotik: prepend "RouterBOARD" to machine name for NOR devices

LEDE Commits lede-commits at lists.infradead.org
Wed Mar 15 15:21:18 PDT 2017


pepe2k pushed a commit to source.git, branch master:
https://git.lede-project.org/e1f3cf7ede923312a09fd37195b059a31072cd52

commit e1f3cf7ede923312a09fd37195b059a31072cd52
Author: Thibaut VARENE <hacks at slashdirt.org>
AuthorDate: Mon Mar 13 14:51:54 2017 +0100

    ar71xx: mikrotik: prepend "RouterBOARD" to machine name for NOR devices
    
    When the device name doesn't already contain "RouterBOARD", this patch adds
    this string to the machine name.
    
    Most NOR devices already have "RouterBOARD" in their hardware-stored device name,
    but not all of them.
    
    This patch also makes the code more robust against buffer overflows.
    
    Signed-off-by: Thibaut VARENE <hacks at slashdirt.org>
---
 target/linux/ar71xx/files/arch/mips/ath79/mach-rbspi.c | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-rbspi.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-rbspi.c
index b26b1ae..3f68b94 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/mach-rbspi.c
+++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-rbspi.c
@@ -437,20 +437,32 @@ void __init rbspi_wlan_init(u16 id, int wmac_offset)
 	kfree(art_buf);
 }
 
+#define RBSPI_MACH_BUFLEN	64
 /* 
  * Common platform init routine for all SPI NOR devices.
  */
 static int __init rbspi_platform_setup(void)
 {
 	const struct rb_info *info;
-	char buf[64];
+	char buf[RBSPI_MACH_BUFLEN] = "MikroTik ";
+	char *str;
+	int len = RBSPI_MACH_BUFLEN - strlen(buf) - 1;
 
 	info = rb_init_info((void *)(KSEG1ADDR(AR71XX_SPI_BASE)), 0x20000);
 	if (!info)
 		return -ENODEV;
 
-	scnprintf(buf, sizeof(buf), "MikroTik %s",
-		(info->board_name) ? info->board_name : "");
+	if (info->board_name) {
+		str = "RouterBOARD ";
+		if (strncmp(info->board_name, str, strlen(str))) {
+			strncat(buf, str, len);
+			len -= strlen(str);
+		}
+		strncat(buf, info->board_name, len);
+	}
+	else
+		strncat(buf, "UNKNOWN", len);
+
 	mips_set_machine_name(buf);
 
 	/* fix partitions based on flash parsing */



More information about the lede-commits mailing list