Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

MIPS: Cobalt use strlcat() for the command line arguments

Tested with CoLo v1.22

Signed-off-by: Yoichi Yuasa <yuasa@linux-mips.org>
Patchwork: http://patchwork.linux-mips.org/patch/807/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>

authored by

Yoichi Yuasa and committed by
Ralf Baechle
0833c76b c6a3c851

+7 -15
+7 -15
arch/mips/cobalt/setup.c
··· 97 97 98 98 void __init prom_init(void) 99 99 { 100 - int narg, indx, posn, nchr; 101 100 unsigned long memsz; 101 + int argc, i; 102 102 char **argv; 103 103 104 104 memsz = fw_arg0 & 0x7fff0000; 105 - narg = fw_arg0 & 0x0000ffff; 105 + argc = fw_arg0 & 0x0000ffff; 106 + argv = (char **)fw_arg1; 106 107 107 - if (narg) { 108 - arcs_cmdline[0] = '\0'; 109 - argv = (char **) fw_arg1; 110 - posn = 0; 111 - for (indx = 1; indx < narg; ++indx) { 112 - nchr = strlen(argv[indx]); 113 - if (posn + 1 + nchr + 1 > sizeof(arcs_cmdline)) 114 - break; 115 - if (posn) 116 - arcs_cmdline[posn++] = ' '; 117 - strcpy(arcs_cmdline + posn, argv[indx]); 118 - posn += nchr; 119 - } 108 + for (i = 1; i < argc; i++) { 109 + strlcat(arcs_cmdline, argv[i], COMMAND_LINE_SIZE); 110 + if (i < (argc - 1)) 111 + strlcat(arcs_cmdline, " ", COMMAND_LINE_SIZE); 120 112 } 121 113 122 114 add_memory_region(0x0, memsz, BOOT_MEM_RAM);