mirror of
https://github.com/denoland/deno.git
synced 2025-09-26 20:29:11 +00:00
fix(ext/node): node:buffer validates INSPECT_MAX_BYTES (#29469)
Some checks are pending
ci / pre-build (push) Waiting to run
ci / test debug linux-aarch64 (push) Blocked by required conditions
ci / test release linux-aarch64 (push) Blocked by required conditions
ci / test debug macos-aarch64 (push) Blocked by required conditions
ci / test release macos-aarch64 (push) Blocked by required conditions
ci / bench release linux-x86_64 (push) Blocked by required conditions
ci / lint debug linux-x86_64 (push) Blocked by required conditions
ci / lint debug macos-x86_64 (push) Blocked by required conditions
ci / lint debug windows-x86_64 (push) Blocked by required conditions
ci / test debug linux-x86_64 (push) Blocked by required conditions
ci / test release linux-x86_64 (push) Blocked by required conditions
ci / test debug macos-x86_64 (push) Blocked by required conditions
ci / test release macos-x86_64 (push) Blocked by required conditions
ci / test debug windows-x86_64 (push) Blocked by required conditions
ci / test release windows-x86_64 (push) Blocked by required conditions
ci / build wasm32 (push) Blocked by required conditions
ci / publish canary (push) Blocked by required conditions
Some checks are pending
ci / pre-build (push) Waiting to run
ci / test debug linux-aarch64 (push) Blocked by required conditions
ci / test release linux-aarch64 (push) Blocked by required conditions
ci / test debug macos-aarch64 (push) Blocked by required conditions
ci / test release macos-aarch64 (push) Blocked by required conditions
ci / bench release linux-x86_64 (push) Blocked by required conditions
ci / lint debug linux-x86_64 (push) Blocked by required conditions
ci / lint debug macos-x86_64 (push) Blocked by required conditions
ci / lint debug windows-x86_64 (push) Blocked by required conditions
ci / test debug linux-x86_64 (push) Blocked by required conditions
ci / test release linux-x86_64 (push) Blocked by required conditions
ci / test debug macos-x86_64 (push) Blocked by required conditions
ci / test release macos-x86_64 (push) Blocked by required conditions
ci / test debug windows-x86_64 (push) Blocked by required conditions
ci / test release windows-x86_64 (push) Blocked by required conditions
ci / build wasm32 (push) Blocked by required conditions
ci / publish canary (push) Blocked by required conditions
Co-authored-by: David Sherret <dsherret@users.noreply.github.com>
This commit is contained in:
parent
e3bf5ee5db
commit
1b6736d3f9
4 changed files with 64 additions and 9 deletions
|
@ -119,7 +119,9 @@ const MAX_UINT32 = 2 ** 32;
|
||||||
|
|
||||||
const customInspectSymbol = SymbolFor("nodejs.util.inspect.custom");
|
const customInspectSymbol = SymbolFor("nodejs.util.inspect.custom");
|
||||||
|
|
||||||
export const INSPECT_MAX_BYTES = 50;
|
let INSPECT_MAX_BYTES_ = 50;
|
||||||
|
|
||||||
|
export const INSPECT_MAX_BYTES = INSPECT_MAX_BYTES_;
|
||||||
|
|
||||||
export const constants = {
|
export const constants = {
|
||||||
MAX_LENGTH: kMaxLength,
|
MAX_LENGTH: kMaxLength,
|
||||||
|
@ -611,17 +613,17 @@ Buffer.prototype[customInspectSymbol] =
|
||||||
Buffer.prototype.inspect =
|
Buffer.prototype.inspect =
|
||||||
function inspect() {
|
function inspect() {
|
||||||
let str = "";
|
let str = "";
|
||||||
const max = INSPECT_MAX_BYTES;
|
|
||||||
str = StringPrototypeTrim(
|
str = StringPrototypeTrim(
|
||||||
StringPrototypeReplace(
|
StringPrototypeReplace(
|
||||||
// deno-lint-ignore prefer-primordials
|
// deno-lint-ignore prefer-primordials
|
||||||
this.toString("hex", 0, max),
|
this.toString("hex", 0, INSPECT_MAX_BYTES_),
|
||||||
SPACER_PATTERN,
|
SPACER_PATTERN,
|
||||||
"$1 ",
|
"$1 ",
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
if (this.length > max) {
|
if (this.length > INSPECT_MAX_BYTES_) {
|
||||||
str += " ... ";
|
const remaining = this.length - INSPECT_MAX_BYTES_;
|
||||||
|
str += ` ... ${remaining} more byte${remaining > 1 ? "s" : ""}`;
|
||||||
}
|
}
|
||||||
return "<Buffer " + str + ">";
|
return "<Buffer " + str + ">";
|
||||||
};
|
};
|
||||||
|
@ -2766,7 +2768,7 @@ export function transcode(source, fromEnco, toEnco) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
const mod = {
|
||||||
atob,
|
atob,
|
||||||
btoa,
|
btoa,
|
||||||
Blob,
|
Blob,
|
||||||
|
@ -2774,9 +2776,21 @@ export default {
|
||||||
constants,
|
constants,
|
||||||
isAscii,
|
isAscii,
|
||||||
isUtf8,
|
isUtf8,
|
||||||
INSPECT_MAX_BYTES,
|
get INSPECT_MAX_BYTES() {
|
||||||
|
return INSPECT_MAX_BYTES_;
|
||||||
|
},
|
||||||
|
set INSPECT_MAX_BYTES(val) {
|
||||||
|
validateNumber(val, "INSPECT_MAX_BYTES", 0);
|
||||||
|
INSPECT_MAX_BYTES_ = val;
|
||||||
|
},
|
||||||
kMaxLength,
|
kMaxLength,
|
||||||
kStringMaxLength,
|
kStringMaxLength,
|
||||||
SlowBuffer,
|
SlowBuffer,
|
||||||
transcode,
|
transcode,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// NB(bartlomieju): we want to have a default exports from this module for ES imports,
|
||||||
|
// as well as make it work with `require` in such a way that getters/setters
|
||||||
|
// for `INSPECT_MAX_BYTES` work correctly - using `as "module.exports"` ensures
|
||||||
|
// that `require`ing this module does that.
|
||||||
|
export { mod as "module.exports", mod as default };
|
||||||
|
|
|
@ -298,6 +298,7 @@
|
||||||
"test-buffer-readint.js",
|
"test-buffer-readint.js",
|
||||||
"test-buffer-readuint.js",
|
"test-buffer-readuint.js",
|
||||||
"test-buffer-safe-unsafe.js",
|
"test-buffer-safe-unsafe.js",
|
||||||
|
"test-buffer-set-inspect-max-bytes.js",
|
||||||
"test-buffer-sharedarraybuffer.js",
|
"test-buffer-sharedarraybuffer.js",
|
||||||
"test-buffer-slice.js",
|
"test-buffer-slice.js",
|
||||||
"test-buffer-slow.js",
|
"test-buffer-slow.js",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<!-- deno-fmt-ignore-file -->
|
<!-- deno-fmt-ignore-file -->
|
||||||
# Remaining Node Tests
|
# Remaining Node Tests
|
||||||
|
|
||||||
1176 tests out of 3993 have been ported from Node 23.9.0 (29.45% ported, 71.07% remaining).
|
1177 tests out of 3993 have been ported from Node 23.9.0 (29.48% ported, 71.05% remaining).
|
||||||
|
|
||||||
NOTE: This file should not be manually edited. Please edit `tests/node_compat/config.json` and run `deno task setup` in `tests/node_compat/runner` dir instead.
|
NOTE: This file should not be manually edited. Please edit `tests/node_compat/config.json` and run `deno task setup` in `tests/node_compat/runner` dir instead.
|
||||||
|
|
||||||
|
@ -292,7 +292,6 @@ NOTE: This file should not be manually edited. Please edit `tests/node_compat/co
|
||||||
- [parallel/test-buffer-pool-untransferable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-pool-untransferable.js)
|
- [parallel/test-buffer-pool-untransferable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-pool-untransferable.js)
|
||||||
- [parallel/test-buffer-prototype-inspect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-prototype-inspect.js)
|
- [parallel/test-buffer-prototype-inspect.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-prototype-inspect.js)
|
||||||
- [parallel/test-buffer-resizable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-resizable.js)
|
- [parallel/test-buffer-resizable.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-resizable.js)
|
||||||
- [parallel/test-buffer-set-inspect-max-bytes.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-set-inspect-max-bytes.js)
|
|
||||||
- [parallel/test-buffer-write-fast.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-write-fast.js)
|
- [parallel/test-buffer-write-fast.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-buffer-write-fast.js)
|
||||||
- [parallel/test-c-ares.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-c-ares.js)
|
- [parallel/test-c-ares.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-c-ares.js)
|
||||||
- [parallel/test-child-process-advanced-serialization-largebuffer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-advanced-serialization-largebuffer.js)
|
- [parallel/test-child-process-advanced-serialization-largebuffer.js](https://github.com/nodejs/node/tree/v23.9.0/test/parallel/test-child-process-advanced-serialization-largebuffer.js)
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
// deno-fmt-ignore-file
|
||||||
|
// deno-lint-ignore-file
|
||||||
|
|
||||||
|
// Copyright Joyent and Node contributors. All rights reserved. MIT license.
|
||||||
|
// Taken from Node 23.9.0
|
||||||
|
// This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
require('../common');
|
||||||
|
const assert = require('assert');
|
||||||
|
const buffer = require('buffer');
|
||||||
|
|
||||||
|
const rangeErrorObjs = [NaN, -1];
|
||||||
|
const typeErrorObj = 'and even this';
|
||||||
|
|
||||||
|
for (const obj of rangeErrorObjs) {
|
||||||
|
assert.throws(
|
||||||
|
() => buffer.INSPECT_MAX_BYTES = obj,
|
||||||
|
{
|
||||||
|
code: 'ERR_OUT_OF_RANGE',
|
||||||
|
name: 'RangeError',
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.throws(
|
||||||
|
() => buffer.INSPECT_MAX_BYTES = obj,
|
||||||
|
{
|
||||||
|
code: 'ERR_OUT_OF_RANGE',
|
||||||
|
name: 'RangeError',
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.throws(
|
||||||
|
() => buffer.INSPECT_MAX_BYTES = typeErrorObj,
|
||||||
|
{
|
||||||
|
code: 'ERR_INVALID_ARG_TYPE',
|
||||||
|
name: 'TypeError',
|
||||||
|
}
|
||||||
|
);
|
Loading…
Add table
Add a link
Reference in a new issue