static char *get_early_cmdline(uintptr_t dtb_pa)
{
- const char *fdt_cmdline = NULL;
- unsigned int fdt_cmdline_size = 0;
+ const char *fdt_cmdline;
+ ssize_t fdt_cmdline_size = 0;
int chosen_node;
if (!IS_ENABLED(CONFIG_CMDLINE_FORCE)) {
fdt_cmdline = fdt_getprop((void *)dtb_pa, chosen_node,
"bootargs", NULL);
if (fdt_cmdline) {
- fdt_cmdline_size = strlen(fdt_cmdline);
- strscpy(early_cmdline, fdt_cmdline,
- COMMAND_LINE_SIZE);
+ fdt_cmdline_size = strscpy(early_cmdline, fdt_cmdline);
+ if (fdt_cmdline_size < 0)
+ return early_cmdline;
}
}
}
if (IS_ENABLED(CONFIG_CMDLINE_EXTEND) ||
IS_ENABLED(CONFIG_CMDLINE_FORCE) ||
- fdt_cmdline_size == 0 /* CONFIG_CMDLINE_FALLBACK */) {
- strlcat(early_cmdline, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
- }
+ fdt_cmdline_size == 0 /* CONFIG_CMDLINE_FALLBACK */)
+ strscpy(early_cmdline + fdt_cmdline_size, CONFIG_CMDLINE,
+ COMMAND_LINE_SIZE - fdt_cmdline_size);
return early_cmdline;
}