From 7b5b5b3db3ea26397fa74f952aa1ee9ca9696ebe Mon Sep 17 00:00:00 2001 From: Elbert Alias <77259+AliasIO@users.noreply.github.com> Date: Wed, 21 Dec 2022 14:51:18 +1100 Subject: [PATCH] Validate URL in cli.js --- src/drivers/npm/cli.js | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/src/drivers/npm/cli.js b/src/drivers/npm/cli.js index ef8ae98b0..bda0ad5ed 100755 --- a/src/drivers/npm/cli.js +++ b/src/drivers/npm/cli.js @@ -94,6 +94,19 @@ Options: process.exit(options.help ? 0 : 1) } +try { + const { hostname } = new URL(url) + + if (!hostname) { + throw new Error('Invalid URL') + } +} catch (error) { + // eslint-disable-next-line no-console + console.log(error.message || error.toString()) + + process.exit(1) +} + const headers = {} if (options.header) { @@ -124,16 +137,24 @@ if (options.header) { process.exit(0) } catch (error) { + try { + await Promise.race([ + wappalyzer.destroy(), + new Promise((resolve, reject) => + setTimeout( + () => reject(new Error('Attempt to close the browser timed out')), + 3000 + ) + ), + ]) + } catch (error) { + // eslint-disable-next-line no-console + console.error(error.message || String(error)) + } + // eslint-disable-next-line no-console console.error(error.message || String(error)) - await Promise.race([ - wappalyzer.destroy(), - new Promise((resolve, reject) => - setTimeout(reject(new Error('Failed to close the browser')), 3000) - ), - ]) - process.exit(1) } })()