| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent dab574e commit 23d11a1
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -40,6 +40,7 @@ const { | |||
| 40 | 40 | } = require('internal/dgram'); | |
| 41 | 41 | const { guessHandleType } = internalBinding('util'); | |
| 42 | 42 | const { | |
| 43 | + ERR_BUFFER_OUT_OF_BOUNDS, | ||
| 43 | 44 | ERR_INVALID_ARG_TYPE, | |
| 44 | 45 | ERR_MISSING_ARGS, | |
| 45 | 46 | ERR_SOCKET_ALREADY_BOUND, | |
@@ -487,6 +488,13 @@ function sliceBuffer(buffer, offset, length) { | |||
| 487 | 488 | ||
| 488 | 489 | offset = offset >>> 0; | |
| 489 | 490 | length = length >>> 0; | |
| 491 | + if (offset > buffer.byteLength) { | ||
| 492 | + throw new ERR_BUFFER_OUT_OF_BOUNDS('offset'); | ||
| 493 | + } | ||
| 494 | + | ||
| 495 | + if (offset + length > buffer.byteLength) { | ||
| 496 | + throw new ERR_BUFFER_OUT_OF_BOUNDS('length'); | ||
| 497 | + } | ||
| 490 | 498 | ||
| 491 | 499 | return Buffer.from(buffer.buffer, buffer.byteOffset + offset, length); | |
| 492 | 500 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -77,6 +77,47 @@ function checkArgs(connected) { | |||
| 77 | 77 | message: 'Already connected' | |
| 78 | 78 | } | |
| 79 | 79 | ); | |
| 80 | + | ||
| 81 | + const longArray = [1, 2, 3, 4, 5, 6, 7, 8]; | ||
| 82 | + for (const input of ['hello', | ||
| 83 | + Buffer.from('hello'), | ||
| 84 | + Buffer.from('hello world').subarray(0, 5), | ||
| 85 | + Buffer.from('hello world').subarray(4, 9), | ||
| 86 | + Buffer.from('hello world').subarray(6), | ||
| 87 | + new Uint8Array([1, 2, 3, 4, 5]), | ||
| 88 | + new Uint8Array(longArray).subarray(0, 5), | ||
| 89 | + new Uint8Array(longArray).subarray(2, 7), | ||
| 90 | + new Uint8Array(longArray).subarray(3), | ||
| 91 | + new DataView(new ArrayBuffer(5), 0), | ||
| 92 | + new DataView(new ArrayBuffer(6), 1), | ||
| 93 | + new DataView(new ArrayBuffer(7), 1, 5)]) { | ||
| 94 | + assert.throws( | ||
| 95 | + () => { sock.send(input, 6, 0); }, | ||
| 96 | + { | ||
| 97 | + code: 'ERR_BUFFER_OUT_OF_BOUNDS', | ||
| 98 | + name: 'RangeError', | ||
| 99 | + message: '"offset" is outside of buffer bounds', | ||
| 100 | + } | ||
| 101 | + ); | ||
| 102 | + | ||
| 103 | + assert.throws( | ||
| 104 | + () => { sock.send(input, 0, 6); }, | ||
| 105 | + { | ||
| 106 | + code: 'ERR_BUFFER_OUT_OF_BOUNDS', | ||
| 107 | + name: 'RangeError', | ||
| 108 | + message: '"length" is outside of buffer bounds', | ||
| 109 | + } | ||
| 110 | + ); | ||
| 111 | + | ||
| 112 | + assert.throws( | ||
| 113 | + () => { sock.send(input, 3, 4); }, | ||
| 114 | + { | ||
| 115 | + code: 'ERR_BUFFER_OUT_OF_BOUNDS', | ||
| 116 | + name: 'RangeError', | ||
| 117 | + message: '"length" is outside of buffer bounds', | ||
| 118 | + } | ||
| 119 | + ); | ||
| 120 | + } | ||
| 80 | 121 | } else { | |
| 81 | 122 | assert.throws(() => { sock.send(buf, 1, 1, -1, host); }, RangeError); | |
| 82 | 123 | assert.throws(() => { sock.send(buf, 1, 1, 0, host); }, RangeError); | |
| Back | FazBrowse Home | New Git URL |
0 commit comments