diff options
author | Matthias Schiffer <matthias.schiffer@ew.tq-group.com> | 2023-07-14 13:24:50 +0200 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2023-08-08 17:05:43 -0400 |
commit | 615828721abfe8c73b5103d4436402ecbf9b9897 (patch) | |
tree | bdd4cb11ef01155c17dfa51115eeff976bba05e7 /test | |
parent | a169438411f9277cc689c14078151aa1d1caae3c (diff) | |
download | u-boot-615828721abfe8c73b5103d4436402ecbf9b9897.tar.gz u-boot-615828721abfe8c73b5103d4436402ecbf9b9897.tar.bz2 u-boot-615828721abfe8c73b5103d4436402ecbf9b9897.zip |
Revert "lib: string: Fix strlcpy return value", fix callers
Both the Linux kernel and libbsd agree that strlcpy() should always
return strlen(src) and not include the NUL termination. The incorrect
U-Boot implementation makes it impossible to check the return value for
truncation, and breaks code written with the usual implementation in
mind (for example, fdtdec_add_reserved_memory() was subtly broken).
I reviewed all callers of strlcpy() and strlcat() and fixed them
according to my understanding of the intended function.
This reverts commit d3358ecc54be0bc3b4dd11f7a63eab0a2842f772 and adds
related fixes.
Fixes: d3358ecc54be ("lib: string: Fix strlcpy return value")
Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Sean Anderson <sean.anderson@seco.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/lib/strlcat.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/test/lib/strlcat.c b/test/lib/strlcat.c index a0ec037388..d8453fe78e 100644 --- a/test/lib/strlcat.c +++ b/test/lib/strlcat.c @@ -43,11 +43,11 @@ static int do_test_strlcat(struct unit_test_state *uts, int line, size_t align1, s2[i] = 32 + 23 * i % (127 - 32); s2[len2 - 1] = '\0'; - expected = len2 < n ? min(len1 + len2 - 1, n) : n; + expected = min(strlen(s2), n) + strlen(s1); actual = strlcat(s2, s1, n); if (expected != actual) { ut_failf(uts, __FILE__, line, __func__, - "strlcat(s2, s1, 2) == len2 < n ? min(len1 + len2, n) : n", + "strlcat(s2, s1, n) == min(len2, n) + len1", "Expected %#zx (%zd), got %#zx (%zd)", expected, expected, actual, actual); return CMD_RET_FAILURE; |