Skip to content

Commit

Permalink
fs: fix WTF-8 decoding issue (libuv#4092)
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#2970
Fixes: nodejs/node#48673
  • Loading branch information
vtjnash committed Jul 13, 2023
1 parent 50b53cb commit d09441c
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 d09441c

Please sign in to comment.