fix(op_crates/fetch): correct regexp for fetch header (#8927)

Fix bug in regular expression and make the regular expression more
strict.

In a string passed to new RegExp(), '[\t\s]' is identical to '[ts]' and
not `/[\t\s]/`. For that, the backslash needs to be escaped in the
string. Futhermore, `\t` is the tab character and is included in the
special regexp value `\s` so is unnecessary.

That would reduce the RegExp to new RegExp(`^${value}\\s*;?`) but
there's no point in matching 0 or more space characters followed by 0 or
one semi-colons as that will match no matter what follows `value`.

To make it more strict, require one of space, semicolon, or
end-of-string after value.
This commit is contained in:
Rich Trott 2020-12-30 14:46:08 -08:00 committed by GitHub
parent 22e0ee92a6
commit e568ddf996
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 1 deletions

View file

@ -249,6 +249,25 @@ unitTest(
},
);
unitTest(
{ perms: { net: true } },
async function fetchMultipartFormBadContentType(): Promise<void> {
const response = await fetch(
"http://localhost:4545/multipart_form_bad_content_type",
);
assert(response.body !== null);
await assertThrowsAsync(
async (): Promise<void> => {
await response.formData();
},
TypeError,
"Invalid form data",
);
await response.body.cancel();
},
);
unitTest(
{ perms: { net: true } },
async function fetchURLEncodedFormDataSuccess(): Promise<void> {