Commit f47d5a4f authored by Michael Ellerman's avatar Michael Ellerman
Browse files

powerpc/prom_init: Convert prom_strcpy() into prom_strscpy_pad()



In a subsequent patch we'd like to have something like a strscpy_pad()
implementation usable in prom_init.c.

Currently we have a strcpy() implementation with only one caller, so
convert it into strscpy_pad() and update the caller.

Reviewed-by: default avatarDaniel Axtens <dja@axtens.net>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20210621064938.2021419-1-mpe@ellerman.id.au
parent 3018fbc6
Loading
Loading
Loading
Loading
+24 −6
Original line number Diff line number Diff line
@@ -242,13 +242,31 @@ static int __init prom_strcmp(const char *cs, const char *ct)
	return 0;
}

static char __init *prom_strcpy(char *dest, const char *src)
static ssize_t __init prom_strscpy_pad(char *dest, const char *src, size_t n)
{
	char *tmp = dest;
	ssize_t rc;
	size_t i;

	while ((*dest++ = *src++) != '\0')
		/* nothing */;
	return tmp;
	if (n == 0 || n > INT_MAX)
		return -E2BIG;

	// Copy up to n bytes
	for (i = 0; i < n && src[i] != '\0'; i++)
		dest[i] = src[i];

	rc = i;

	// If we copied all n then we have run out of space for the nul
	if (rc == n) {
		// Rewind by one character to ensure nul termination
		i--;
		rc = -E2BIG;
	}

	for (; i < n; i++)
		dest[i] = '\0';

	return rc;
}

static int __init prom_strncmp(const char *cs, const char *ct, size_t count)
@@ -2701,7 +2719,7 @@ static void __init flatten_device_tree(void)

	/* Add "phandle" in there, we'll need it */
	namep = make_room(&mem_start, &mem_end, 16, 1);
	prom_strcpy(namep, "phandle");
	prom_strscpy_pad(namep, "phandle", sizeof("phandle"));
	mem_start = (unsigned long)namep + prom_strlen(namep) + 1;

	/* Build string array */