aboutsummaryrefslogtreecommitdiff
path: root/contrib/libc-vis
diff options
context:
space:
mode:
authorAlex Richardson <arichardson@FreeBSD.org>2021-06-16 15:27:13 +0000
committerAlex Richardson <arichardson@FreeBSD.org>2021-06-16 15:27:13 +0000
commit1a2f06d0f2905c9a18340b377cbbe772f2ca6844 (patch)
treede52227a1ff5ebaa95692c636fd2b0ff1fc4bf21 /contrib/libc-vis
parentbc6a2267fffeafd3946637607a74cfd639398f9d (diff)
Diffstat (limited to 'contrib/libc-vis')
-rw-r--r--contrib/libc-vis/vis.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/contrib/libc-vis/vis.c b/contrib/libc-vis/vis.c
index 21c07b70619d..c43186a44b51 100644
--- a/contrib/libc-vis/vis.c
+++ b/contrib/libc-vis/vis.c
@@ -465,7 +465,8 @@ istrsenvisx(char **mbdstp, size_t *dlen, const char *mbsrc, size_t mblength,
while (mbslength > 0) {
/* Convert one multibyte character to wchar_t. */
if (!cerr)
- clen = mbrtowc(src, mbsrc, MB_LEN_MAX, &mbstate);
+ clen = mbrtowc(src, mbsrc, MIN(mbslength, MB_LEN_MAX),
+ &mbstate);
if (cerr || clen < 0) {
/* Conversion error, process as a byte instead. */
*src = (wint_t)(u_char)*mbsrc;