Skip to content

Commit

Permalink
fs: fix WTF-8 decoding issue
Browse files Browse the repository at this point in the history
We forgot to mask off the high bits from the first byte, so we ended up
always failing the subsequent range check.

Refs: libuv#297
Fixes: nodejs/node#48673
  • Loading branch information
vtjnash committed Jul 12, 2023
1 parent 2f87d5c commit 278e09f
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion src/win/fs.c
Original file line number Diff line number Diff line change
Expand Up @@ -176,9 +176,11 @@ static int32_t fs__decode_wtf8_char(const char** input) {
if ((b4 & 0xC0) != 0x80)
return -1; /* invalid: not a continuation byte */
code_point = (code_point << 6) | (b4 & 0x3F);
if (b1 <= 0xF4)
if (b1 <= 0xF4) {
code_point &= 0x1FFFFF;
if (code_point <= 0x10FFFF)
return code_point; /* four-byte character */
}

/* code point too large */
return -1;
Expand Down

0 comments on commit 278e09f

Please sign in to comment.