Skip to content

Commit 2e346d4

Browse files
committed
Update launch editor validations
1 parent 7bcf470 commit 2e346d4

File tree

2 files changed

+9
-8
lines changed

2 files changed

+9
-8
lines changed

packages/react-dev-utils/errorOverlayMiddleware.js

+3-5
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,9 @@ const launchEditorEndpoint = require('./launchEditorEndpoint');
1212
module.exports = function createLaunchEditorMiddleware() {
1313
return function launchEditorMiddleware(req, res, next) {
1414
if (req.url.startsWith(launchEditorEndpoint)) {
15-
launchEditor(
16-
req.query.fileName,
17-
req.query.lineNumber,
18-
req.query.colNumber
19-
);
15+
const lineNumber = parseInt(req.query.lineNumber, 10) || 1;
16+
const colNumber = parseInt(req.query.colNumber, 10) || 1;
17+
launchEditor(req.query.fileName, lineNumber, colNumber);
2018
res.end();
2119
} else {
2220
next();

packages/react-dev-utils/launchEditor.js

+6-3
Original file line numberDiff line numberDiff line change
@@ -260,13 +260,16 @@ function launchEditor(fileName, lineNumber, colNumber) {
260260

261261
// Sanitize lineNumber to prevent malicious use on win32
262262
// via: https://github.com/nodejs/node/blob/c3bb4b1aa5e907d489619fb43d233c3336bfc03d/lib/child_process.js#L333
263-
if (lineNumber && isNaN(lineNumber)) {
263+
// and it should be a positive integer
264+
if (!(Number.isInteger(lineNumber) && lineNumber > 0)) {
264265
return;
265266
}
266267

267-
// colNumber is optional, but should be a number
268+
// colNumber is optional, but should be a positive integer too
268269
// default is 1
269-
colNumber = parseInt(colNumber, 10) || 1;
270+
if (!(Number.isInteger(colNumber) && colNumber > 0)) {
271+
colNumber = 1;
272+
}
270273

271274
let [editor, ...args] = guessEditor();
272275
if (!editor) {

0 commit comments

Comments
 (0)