diff options
author | Rich Felker <dalias@aerifal.cx> | 2025-02-09 10:02:10 -0500 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2025-02-09 10:02:10 -0500 |
commit | 5e594aeabf331ae0abb380c5fa58e5348b2b0148 (patch) | |
tree | 7a27a8ed715fc935437bca1bee17a126f3c2df2c /src | |
parent | 6af4f25b899e89e4b91f8c197ae5a6ce04bcce7b (diff) | |
download | musl-5e594aeabf331ae0abb380c5fa58e5348b2b0148.tar.gz |
iconv: fix erroneous decoding of some invalid ShiftJIS sequences
out-of-range second bytes were not handled, leading to wrong character
output rather than a reported encoding error.
fix based on bug report by Nick Wellnhofer, submitted in private in
case the issue turned out to have security implications.
Diffstat (limited to 'src')
-rw-r--r-- | src/locale/iconv.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/locale/iconv.c b/src/locale/iconv.c index 7fb2e1ef..9605c8e9 100644 --- a/src/locale/iconv.c +++ b/src/locale/iconv.c @@ -339,6 +339,8 @@ size_t iconv(iconv_t cd, char **restrict in, size_t *restrict inb, char **restri } else if (d-159 <= 252-159) { c++; d -= 159; + } else { + goto ilseq; } if (c>=84) goto ilseq; c = jis0208[c][d]; |