Skip to content

Commit d4dd066

Browse files
committed
module: validate request in require.resolve
PR-URL: #18359 Fixes: #18352 Reviewed-By: James M Snell <[email protected]> Reviewed-By: Colin Ihrig <[email protected]>
1 parent b217154 commit d4dd066

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

lib/internal/module.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
'use strict';
22

3+
const errors = require('internal/errors');
4+
35
// Invoke with makeRequireFunction(module) where |module| is the Module object
46
// to use as the context for the require() function.
57
function makeRequireFunction(mod) {
@@ -15,6 +17,10 @@ function makeRequireFunction(mod) {
1517
}
1618

1719
function resolve(request, options) {
20+
if (typeof request !== 'string') {
21+
throw new errors.Error('ERR_INVALID_ARG_TYPE',
22+
'request', 'string', request);
23+
}
1824
return Module._resolveFilename(request, mod, false, options);
1925
}
2026

test/parallel/test-require-resolve.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
// USE OR OTHER DEALINGS IN THE SOFTWARE.
2121

2222
'use strict';
23-
require('../common');
23+
const common = require('../common');
2424
const fixtures = require('../common/fixtures');
2525
const assert = require('assert');
2626

@@ -38,3 +38,13 @@ assert.strictEqual('path', require.resolve('path'));
3838
// Test configurable resolve() paths.
3939
require(fixtures.path('require-resolve.js'));
4040
require(fixtures.path('resolve-paths', 'default', 'verify-paths.js'));
41+
42+
const re = /^The "request" argument must be of type string\. Received type \w+$/;
43+
[1, false, null, undefined, {}].forEach((value) => {
44+
common.expectsError(
45+
() => { require.resolve(value); },
46+
{
47+
code: 'ERR_INVALID_ARG_TYPE',
48+
message: re
49+
});
50+
});

0 commit comments

Comments
 (0)