File CVE-2020-15095.patch of Package nodejs8.18411

From a9857b8f6869451ff058789c4631fadfde5bbcbc Mon Sep 17 00:00:00 2001
From: claudiahdz <cghr1990@gmail.com>
Date: Thu, 25 Jun 2020 19:34:47 -0500
Subject: [PATCH] chore: remove auth info from logs

---
 bin/npm-cli.js                |  4 +++-
 lib/fetch-package-metadata.js |  9 ++++++---
 lib/utils/error-handler.js    |  5 ++++-
 lib/utils/error-message.js    |  5 +++++
 lib/utils/replace-info.js     | 22 ++++++++++++++++++++++
 5 files changed, 40 insertions(+), 5 deletions(-)
 create mode 100644 lib/utils/replace-info.js

diff --git a/deps/npm/bin/npm-cli.js b/deps/npm/bin/npm-cli.js
index 93eddc7a3..c0d9be004 100755
--- a/deps/npm/bin/npm-cli.js
+++ b/deps/npm/bin/npm-cli.js
@@ -28,6 +28,7 @@
   var npm = require('../lib/npm.js')
   var npmconf = require('../lib/config/core.js')
   var errorHandler = require('../lib/utils/error-handler.js')
+  var replaceInfo = require('../lib/utils/replace-info.js')
 
   var configDefs = npmconf.defs
   var shorthands = configDefs.shorthands
@@ -40,7 +41,8 @@
     process.argv.splice(1, 1, 'npm', '-g')
   }
 
-  log.verbose('cli', process.argv)
+  var args = replaceInfo(process.argv)
+  log.verbose('cli', args)
 
   var conf = nopt(types, shorthands)
   npm.argv = conf.argv.remain
diff --git a/deps/npm/lib/fetch-package-metadata.js b/deps/npm/lib/fetch-package-metadata.js
index c4f46f513..ebb378647 100644
--- a/deps/npm/lib/fetch-package-metadata.js
+++ b/deps/npm/lib/fetch-package-metadata.js
@@ -3,6 +3,7 @@
 const deprCheck = require('./utils/depr-check')
 const path = require('path')
 const log = require('npmlog')
+const pacote = require('pacote')
 const readPackageTree = require('read-package-tree')
 const rimraf = require('rimraf')
 const validate = require('aproba')
@@ -11,15 +12,17 @@ const npm = require('./npm')
 let npmConfig
 const npmlog = require('npmlog')
 const limit = require('call-limit')
-const tempFilename = require('./utils/temp-filename')
-const pacote = require('pacote')
+const tempFilename = require('./utils/temp-filename.js')
+const replaceInfo = require('./utils/replace-info.js')
 const isWindows = require('./utils/is-windows.js')
 
 function andLogAndFinish (spec, tracker, done) {
   validate('SOF|SZF|OOF|OZF', [spec, tracker, done])
   return (er, pkg) => {
     if (er) {
-      log.silly('fetchPackageMetaData', 'error for ' + String(spec), er.message)
+      er.message = replaceInfo(er.message)
+      var spc = replaceInfo(String(spec))
+      log.silly('fetchPackageMetaData', 'error for ' + spc, er.message)
       if (tracker) tracker.finish()
     }
     return done(er, pkg)
diff --git a/deps/npm/lib/utils/error-handler.js b/deps/npm/lib/utils/error-handler.js
index 3e6f176ef..902ad7af9 100644
--- a/deps/npm/lib/utils/error-handler.js
+++ b/deps/npm/lib/utils/error-handler.js
@@ -12,6 +12,7 @@ var exitCode = 0
 var rollbacks = npm.rollbacks
 var chain = require('slide').chain
 var errorMessage = require('./error-message.js')
+var replaceInfo = require('./replace-info.js')
 var stopMetrics = require('./metrics.js').stop
 
 const cacheFile = require('./cache-file.js')
@@ -175,14 +176,16 @@ function errorHandler (er) {
   ].forEach(function (k) {
     var v = er[k]
     if (!v) return
+    v = replaceInfo(v)
     log.verbose(k, v)
   })
 
   log.verbose('cwd', process.cwd())
 
   var os = require('os')
+  var args = replaceInfo(process.argv)
   log.verbose('', os.type() + ' ' + os.release())
-  log.verbose('argv', process.argv.map(JSON.stringify).join(' '))
+  log.verbose('argv', args.map(JSON.stringify).join(' '))
   log.verbose('node', process.version)
   log.verbose('npm ', 'v' + npm.version)
 
diff --git a/deps/npm/lib/utils/error-message.js b/deps/npm/lib/utils/error-message.js
index 3faa78f30..78ccdeeb5 100644
--- a/deps/npm/lib/utils/error-message.js
+++ b/deps/npm/lib/utils/error-message.js
@@ -3,12 +3,17 @@ var npm = require('../npm.js')
 var util = require('util')
 var nameValidator = require('validate-npm-package-name')
 var npmlog = require('npmlog')
+var replaceInfo = require('./replace-info.js')
 
 module.exports = errorMessage
 
 function errorMessage (er) {
   var short = []
   var detail = []
+
+  er.message = replaceInfo(er.message)
+  er.stack = replaceInfo(er.stack)
+
   switch (er.code) {
     case 'ENOAUDIT':
       short.push(['audit', er.message])
diff --git a/deps/npm/lib/utils/replace-info.js b/deps/npm/lib/utils/replace-info.js
new file mode 100644
index 000000000..a613a3755
--- /dev/null
+++ b/deps/npm/lib/utils/replace-info.js
@@ -0,0 +1,22 @@
+const URL = require('url')
+
+// replaces auth info in an array
+//  of arguments or in a strings
+function replaceInfo (arg) {
+  const isArray = Array.isArray(arg)
+  const isString = typeof arg === 'string'
+
+  if (!isArray && !isString) return arg
+
+  const args = isString ? arg.split(' ') : arg
+  const info = args.map(arg => {
+    try {
+      const url = new URL(arg)
+      return url.password === '' ? arg : arg.replace(url.password, '***')
+    } catch (e) { return arg }
+  })
+
+  return isString ? info.join(' ') : info
+}
+
+module.exports = replaceInfo
openSUSE Build Service is sponsored by