From 720ef24b15692dc487039633dc7c1fa04b408161 Mon Sep 17 00:00:00 2001 From: LiviaMedeiros Date: Tue, 1 Mar 2022 16:20:45 +0800 Subject: [PATCH] squash: harden string validation in `fh.writeFile` and `fh.appendFile` --- doc/api/fs.md | 12 +++++++----- lib/internal/fs/promises.js | 3 +-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/doc/api/fs.md b/doc/api/fs.md index 976397eb0a1723..9334ebcc6f934b 100644 --- a/doc/api/fs.md +++ b/doc/api/fs.md @@ -695,6 +695,10 @@ the end of the file. -* `data` {string|Buffer|TypedArray|DataView|Object|AsyncIterable|Iterable - |Stream} +* `data` {string|Buffer|TypedArray|DataView|AsyncIterable|Iterable|Stream} * `options` {Object|string} * `encoding` {string|null} The expected character encoding when `data` is a string. **Default:** `'utf8'` * Returns: {Promise} Asynchronously writes data to a file, replacing the file if it already exists. -`data` can be a string, a buffer, an {AsyncIterable} or {Iterable} object, or an -object with an own `toString` function -property. The promise is resolved with no arguments upon success. +`data` can be a string, a buffer, an {AsyncIterable} or {Iterable} object. +The promise is resolved with no arguments upon success. If `options` is a string, then it specifies the `encoding`. diff --git a/lib/internal/fs/promises.js b/lib/internal/fs/promises.js index d66b7f78366e32..c47f3e3095d67a 100644 --- a/lib/internal/fs/promises.js +++ b/lib/internal/fs/promises.js @@ -65,7 +65,6 @@ const { validateOffsetLengthWrite, validateRmOptions, validateRmdirOptions, - validateStringAfterArrayBufferView, validatePrimitiveStringAfterArrayBufferView, warnOnNonPortableTemplate, } = require('internal/fs/utils'); @@ -823,7 +822,7 @@ async function writeFile(path, data, options) { const flag = options.flag || 'w'; if (!isArrayBufferView(data) && !isCustomIterable(data)) { - validateStringAfterArrayBufferView(data, 'data'); + validatePrimitiveStringAfterArrayBufferView(data, 'data'); data = Buffer.from(data, options.encoding || 'utf8'); }