musl: handle wcsnrtombs destination buffer overflow (CVE-2020-28928)
authorPetr Štetiar <ynezz@true.cz>
Fri, 20 Nov 2020 12:13:27 +0000 (13:13 +0100)
committerRISCi_ATOM <bob@bobcall.me>
Fri, 27 Nov 2020 19:35:47 +0000 (14:35 -0500)
commit0de81c1c62e69379d392a5280a3b906dc87033d4
tree3d777ba2e2940aa82a86f1fe5c6d839fca40ccb0
parent17d834e2727b011cd4edd40a56ba6cd65a6da1d9
musl: handle wcsnrtombs destination buffer overflow (CVE-2020-28928)

The wcsnrtombs function in all musl libc versions up through 1.2.1 has
been found to have multiple bugs in handling of destination buffer
size when limiting the input character count, which can lead to
infinite loop with no forward progress (no overflow) or writing past
the end of the destination buffera.

This function is not used internally in musl and is not widely used,
but does appear in some applications. The non-input-limiting form
wcsrtombs is not affected.

All users of musl 1.2.1 and prior versions should apply the attached
patch, which replaces the overly complex and erroneous implementation.
The upcoming 1.2.2 release will adopt this new implementation.

Signed-off-by: Petr Štetiar <ynezz@true.cz>
(cherry picked from commit 4d4ef1058c0f10aa2fa4070cd6b9db4d48b94148)
toolchain/musl/common.mk
toolchain/musl/patches/700-wcsnrtombs-cve-2020-28928.diff [new file with mode: 0644]