Found by OSS-Fuzz and MemorySanitizer.
n++;
} while (((cp << n) & 0x80));
- if (njs_slow_path(n > 4)) {
+ if (njs_slow_path(n > 4 || src + njs_length("%00") * (n - 1) > end)) {
goto uri_error;
}
" '%',"
" '%0',"
" '%QQ',"
+ " '%C0%' + '0',"
" '%C0%10',"
+ " '%C0%80',"
" '%DC%C7',"
" '%80%81%82',"
" '%EF%5C%A0',"
" '%EF%A0%5E',"
+ " '%E0%EF%' + '0',"
" '%E0%EF%A0',"
" '%E0%A0%EF',"
+ " '%F0%A2%95%' + '0',"
" '%FF%A2%95%BB',"
"].every(v=>{try { decodeURI(v)} catch(e) {return e.name == 'URIError'}})"),
njs_str("true")},