GeezerVison is showing github.com — stream: improve views validation on `BYOBRequest` · nodejs/node@96c3373
File tree
Expand file treeCollapse file tree
Open diff view settings
Expand file treeCollapse file tree
Open diff view settings
Collapse file
Copy file name to clipboardExpand all lines: lib/internal/webstreams/readablestream.js +9Lines changed: 9 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -2516,6 +2516,15 @@ function readableByteStreamControllerRespondWithNewView(controller, view) { |
2516 | 2516 | const viewBuffer = ArrayBufferViewGetBuffer(view); |
2517 | 2517 | const viewBufferByteLength = ArrayBufferGetByteLength(viewBuffer); |
2518 | 2518 |
|
| 2519 | + if (stream[kState].state === 'closed') { |
| 2520 | + if (viewByteLength !== 0) |
| 2521 | + throw new ERR_INVALID_STATE.TypeError('View is not zero-length'); |
| 2522 | + } else { |
| 2523 | + assert(stream[kState].state === 'readable'); |
| 2524 | + if (viewByteLength === 0) |
| 2525 | + throw new ERR_INVALID_STATE.TypeError('View is zero-length'); |
| 2526 | + } |
| 2527 | + |
2519 | 2528 | const { |
2520 | 2529 | byteOffset, |
2521 | 2530 | byteLength, |
|
Collapse file
Copy file name to clipboardExpand all lines: test/wpt/status/streams.json -8Lines changed: 0 additions & 8 deletions | Original file line number | Diff line number | Diff line change |
|---|
|
4 | 4 | }, |
5 | 5 | "transferable/deserialize-error.window.js": { |
6 | 6 | "skip": "Browser-specific test" |
7 | | - }, |
8 | | - "readable-byte-streams/bad-buffers-and-views.any.js": { |
9 | | - "fail": { |
10 | | - "note": "TODO: implement detached ArrayBuffer support", |
11 | | - "expected": [ |
12 | | - "ReadableStream with byte source: respondWithNewView() throws if the supplied view's buffer is zero-length (in the readable state)" |
13 | | - ] |
14 | | - } |
15 | 7 | } |
16 | 8 | } |