René's URL Explorer Experiment


Title: Buffer(number) is unsafe · Issue #4660 · nodejs/node · GitHub

Open Graph Title: Buffer(number) is unsafe · Issue #4660 · nodejs/node

X Title: Buffer(number) is unsafe · Issue #4660 · nodejs/node

Description: tl;dr This issue proposes: Change new Buffer(number) to return safe, zeroed-out memory Create a new API for creating uninitialized Buffers, Buffer.alloc(number) Update: Jan 15, 2016 Upon further consideration, I think that returning zero...

Open Graph Description: tl;dr This issue proposes: Change new Buffer(number) to return safe, zeroed-out memory Create a new API for creating uninitialized Buffers, Buffer.alloc(number) Update: Jan 15, 2016 Upon further co...

X Description: tl;dr This issue proposes: Change new Buffer(number) to return safe, zeroed-out memory Create a new API for creating uninitialized Buffers, Buffer.alloc(number) Update: Jan 15, 2016 Upon further co...

Opengraph URL: https://github.com/nodejs/node/issues/4660

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Buffer(number) is unsafe","articleBody":"### tl;dr\n\nThis issue proposes:\n1. Change `new Buffer(number)` to return safe, zeroed-out memory\n2. Create a new API for creating uninitialized Buffers, `Buffer.alloc(number)`\n### Update: Jan 15, 2016\n\nUpon further consideration, I think that returning zeroed out memory is a separate issue. The core issue is: unsafe buffer allocation should be in a different API.\n\nI now support adding two APIs:\n- `Buffer.from(value)` - convert from any type to a buffer\n- `Buffer.alloc(size)` - create an uninitialized buffer with given size\n\nThis solves the core problem that affected `ws` and `bittorrent-dht` which is `Buffer(variable)` getting tricked into taking a number argument.\n### Why is `Buffer` unsafe?\n\nToday, the node.js `Buffer` constructor is overloaded to handle many different argument types like `String`, `Array`, `Object`, `TypedArrayView` (`Uint8Array`, etc.), `ArrayBuffer`, and also `Number`.\n\nThe API is optimized for convenience: you can throw any type at it, and it will try to do what you want.\n\nBecause the Buffer constructor is so powerful, you often see code like this:\n\n``` js\n// Convert UTF-8 strings to hex\nfunction toHex (str) {\n  return new Buffer(str).toString('hex')\n}\n```\n\n**_But what happens if `toHex` is called with a `Number` argument?**_\n### Remote Memory Disclosure\n\nIf an attacker can make your program call the `Buffer` constructor with a `Number` argument, then they can make it allocate uninitialized memory from the node.js process. This could potentially disclose TLS private keys, user data, or database passwords.\n\nWhen the `Buffer` constructor is passed a `Number` argument, it returns an **UNINITIALIZED** block of memory of the specified `size`. When you create a `Buffer` like this, you **MUST** overwrite the contents before returning it to the user.\n### Would this ever be a problem in real code?\n\nYes. It's surprisingly common to forget to check the type of your variables in a dynamically-typed language like JavaScript.\n\nUsually the consequences of assuming the wrong type is that your program crashes with an uncaught exception. But the failure mode for forgetting to check the type of arguments to the `Buffer` constructor is more catastrophic.\n\nHere's an example of a vulnerable service that takes a JSON payload and converts it to hex:\n\n``` js\n// Take a JSON payload {str: \"some string\"} and convert it to hex\nvar server = http.createServer(function (req, res) {\n  var data = ''\n  req.setEncoding('utf8')\n  req.on('data', function (chunk) {\n    data += chunk\n  })\n  req.on('end', function () {\n    var body = JSON.parse(data)\n    res.end(new Buffer(body.str).toString('hex'))\n  })\n})\n\nserver.listen(8080)\n```\n\nIn this example, an http client just has to send:\n\n``` json\n{\n  \"str\": 1000\n}\n```\n\nand it will get back 1,000 bytes of uninitialized memory from the server.\n\nThis is a very serious bug. It's similar in severity to the [the Heartbleed bug](http://heartbleed.com/) that allowed disclosure of OpenSSL process memory by remote attackers.\n### Which real-world packages were vulnerable?\n#### [`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht)\n\n@mafintosh and I found this issue in one of our own packages, [`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht). The bug would allow anyone on the internet to send a series of messages to a user of `bittorrent-dht` and get them to reveal 20 bytes at a time of uninitialized memory from the node.js process.\n\nHere's [the commit](https://github.com/feross/bittorrent-dht/commit/6c7da04025d5633699800a99ec3fbadf70ad35b8) that fixed it. We released a new fixed version, created a [Node Security Project disclosure](https://nodesecurity.io/advisories/68), and deprecated all vulnerable versions on npm so users will get a warning to upgrade to a newer version.\n#### [`ws`](https://www.npmjs.com/package/ws)\n\nThat got us wondering if there were other vulnerable packages. Sure enough, within a short period of time, we found the same issue in [`ws`](https://www.npmjs.com/package/ws), the most popular WebSocket implementation in node.js.\n\nIf certain APIs were called with `Number` parameters instead of `String` or `Buffer` as expected, then uninitialized server memory would be disclosed to the remote peer.\n\nThese were the vulnerable methods:\n\n``` js\nsocket.send(number)\nsocket.ping(number)\nsocket.pong(number)\n```\n\nHere's a vulnerable socket server with some echo functionality:\n\n``` js\nserver.on('connection', function (socket) {\n  socket.on('message', function (message) {\n    message = JSON.parse(message)\n    if (message.type === 'echo') {\n      socket.send(message.data) // send back the user's message\n    }\n  })\n})\n```\n\n`socket.send(number)` called on the server, will disclose server memory.\n\nHere's [the release](https://github.com/websockets/ws/releases/tag/1.0.1) where the issue was fixed, with a more detailed explanation. Props to @3rd-Eden for the quick fix. Here's the [Node Security Project disclosure](https://nodesecurity.io/advisories/67).\n### What's the solution?\n\nIt's important that node.js offers a fast way to get memory otherwise performance-critical applications would needlessly get a lot slower.\n\nBut we need a better way to _signal our intent_ as programmers. **When we want uninitialized memory, we should request it explicitly.**\n\nSensitive functionality should not be packed into a developer-friendly API that loosely accepts many different types. This type of API encourages the lazy practice of passing variables in without checking the type very carefully.\n#### `Buffer.alloc(number)`\n\nThe functionality of creating buffers with uninitialized memory should be part of another API. We propose `Buffer.alloc(number)`. This way, it's not part of an API that frequently gets user input of all sorts of different types passed into it.\n\n``` js\nvar buf = Buffer.alloc(16) // careful, uninitialized memory!\n\n// Immediately overwrite the uninitialized buffer with data from another buffer\nfor (var i = 0; i \u003c buf.length; i++) {\n  buf[i] = otherBuf[i]\n}\n```\n### How do we fix node.js core?\n\nWe sent [a PR](https://github.com/nodejs/node/pull/4514) (merged as `semver-major`) which defends against one case:\n\n``` js\nvar str = 16\nnew Buffer(str, 'utf8')\n```\n\nIn this situation, it's implied that the programmer intended the first argument to be a string, since they passed an encoding as a second argument. Today, node.js will allocate uninitialized memory in the case of `new Buffer(number, encoding)`, which is probably not what the programmer intended.\n\nBut this is only a partial solution, since if the programmer does `new Buffer(variable)` (without an `encoding` parameter) there's no way to know what they intended. If `variable` is sometimes a number, then uninitialized memory will sometimes be returned.\n### What's the real long-term fix?\n\nWe could deprecate and remove `new Buffer(number)` and use `Buffer.alloc(number)` when we need uninitialized memory. But that would break 1000s of packages. So that's a no-go.\n\nInstead, we believe the best solution is to:\n1. Change `new Buffer(number)` to return safe, zeroed-out memory\n2. Create a new API for creating uninitialized Buffers. We propose: `Buffer.alloc(number)`\n\nThis way, existing code continues working and the impact on the npm ecosystem will be minimal. Over time, npm maintainers can migrate performance-critical code to use `Buffer.alloc(number)` instead of `new Buffer(number)`.\n### Conclusion\n\nWe think there's a serious design issue with the `Buffer` API as it exists today. It promotes insecure software by putting high-risk functionality into a convenient API with friendly \"developer ergonomics\".\n\nThis wasn't merely a theoretical exercise because we found the issue in some of the most popular npm packages.\n\nEventually, we hope that node.js core can switch to this new, safer behavior. We believe the impact on the ecosystem would be minimal since it's not a breaking change. Well-maintained, popular packages would be updated to use `Buffer.alloc` quickly, while older, insecure packages would magically become safe from this attack vector.\n","author":{"url":"https://github.com/feross","@type":"Person","name":"feross"},"datePublished":"2016-01-13T05:19:14Z","url":"https://github.com/nodejs/node/issues/4660"}

react-profiling0
react-import-mapreact,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf
route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:bd07d279-6da7-9b0a-2617-5881c8cc45f5
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idCB62:2C47BC:179EB40:1F2D0E6:6AED8A02
html-safe-noncef89a257911c80def9c5d860666a0d4561d2c8bc7b03b5ea643cff10cbeffa9c0
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDQjYyOjJDNDdCQzoxNzlFQjQwOjFGMkQwRTY6NkFFRDhBMDIiLCJ2aXNpdG9yX2lkIjoiMzE1NzMxODQzNDg5ODY3NjIyNyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac8dda22516d3b32cdf66a097a5f3bb2ea9da7cbea7a449fb6844a0d7436c25d7e
hovercard-subject-tagissue:126343377
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/nodejs/node/4660/issue_layout
twitter:imagehttps://opengraph.githubassets.com/bbf8031a7930ed5dde84f03c2433df0bf301c7150213555bd3c48ac4182c380a/nodejs/node/issues/4660
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/bbf8031a7930ed5dde84f03c2433df0bf301c7150213555bd3c48ac4182c380a/nodejs/node/issues/4660
og:image:alttl;dr This issue proposes: Change new Buffer(number) to return safe, zeroed-out memory Create a new API for creating uninitialized Buffers, Buffer.alloc(number) Update: Jan 15, 2016 Upon further co...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernamefeross
hostnamegithub.com
expected-hostnamegithub.com
None56fb42677ae87ed3e64410323d67980aa65d0485568a7858f874e7edfc6d1c11
turbo-cache-controlno-preview
go-importgithub.com/nodejs/node git https://github.com/nodejs/node.git
octolytics-dimension-user_id9950313
octolytics-dimension-user_loginnodejs
octolytics-dimension-repository_id27193779
octolytics-dimension-repository_nwonodejs/node
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id27193779
octolytics-dimension-repository_network_root_nwonodejs/node
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release9c9a37e2423ed382cf39f70b5aa4b4858b40a3b0
ui-targetfull
theme-color#1e2327
color-schemelight dark
react-app-nameissues

Links:

Skip to contenthttps://github.com/nodejs/node/issues/4660#start-of-content
https://github.com/
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fnodejs%2Fnode%2Fissues%2F4660
GitHubRepository hosting, code review, and collaborationhttps://github.com/platform
CopilotAI coding agent for tasks, projects, and automated workhttps://github.com/features/copilot
ActionsCI/CD and automationhttps://github.com/features/actions
Code QualityQuality analysis, fixes, and enforcementhttps://github.com/features/code-quality
CodespacesCloud development environmentshttps://github.com/features/codespaces
Code SecurityVulnerability detection and remediationhttps://github.com/security/advanced-security/code-security
Secret ProtectionSecret scanning and leak preventionhttps://github.com/security/advanced-security/secret-protection
All Featureshttps://github.com/features
Documentationhttps://docs.github.com/en
Traininghttps://learn.github.com/skills
Certificationshttps://learn.github.com/credentials
Build with Copilothttps://github.com/features/ai
Customize Copilothttps://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/customize-copilot-overview
Integrationshttps://github.com/marketplace
Trending reposhttps://github.com/trending
GitHub Sponsorshttps://github.com/open-source/sponsors
Developer articleshttps://github.com/resources/articles
ChangelogYour source for the latest features, improvements, and fixes across GitHub products, all in one place.https://github.blog/changelog/
Enterpriseshttps://github.com/enterprise
Teamhttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
See all industrieshttps://github.com/solutions/industry
Why GitHubhttps://github.com/why-github
Customer Storieshttps://github.com/customer-stories
Business insightshttps://github.com/solutions/executive-insights
Trust Centerhttps://github.com/trust-center
GitHub Advanced SecurityEnterprise-grade code securityhttps://github.com/security/advanced-security
Copilot for businessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Documentationhttps://docs.github.com/en
Resource centerhttps://github.com/resources
Bloghttps://github.blog/
Events & webinarshttps://github.com/resources/events
Community Forumhttps://github.com/orgs/community/discussions
Customer Storieshttps://github.com/customer-stories
Integrationshttps://github.com/marketplace
Customer supporthttps://help.github.com/
Traininghttps://learn.github.com/skills
GitHub Statushttps://www.githubstatus.com/
Abouthttps://github.com/about
Partnershttps://github.com/partners
Changeloghttps://github.blog/changelog/
GitHub UniverseThe event for developers, by developers — talks, workshops, and what’s next for GitHub.https://githubuniverse.com/
Pricinghttps://github.com/pricing
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fnodejs%2Fnode%2Fissues%2F4660
Sign uphttps://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=nodejs%2Fnode
Reloadhttps://github.com/nodejs/node/issues/4660
Reloadhttps://github.com/nodejs/node/issues/4660
Reloadhttps://github.com/nodejs/node/issues/4660
nodejshttps://github.com/nodejs
nodehttps://github.com/nodejs/node
Codehttps://github.com/nodejs/node
Issues654 (654)https://github.com/nodejs/node/issues
Pull requests662 (662)https://github.com/nodejs/node/pulls
Actionshttps://github.com/nodejs/node/actions
Projectshttps://github.com/nodejs/node/projects
Security and qualityhttps://github.com/nodejs/node/security
Insightshttps://github.com/nodejs/node/pulse
https://github.com/nodejs/node
New issuehttps://github.com/login?return_to=https://github.com/nodejs/node/issues/4660
New issuehttps://github.com/login?return_to=https://github.com/nodejs/node/issues/4660
Buffer(number) is unsafehttps://github.com/nodejs/node/issues/4660#top
bufferIssues and PRs related to the buffer subsystem.https://github.com/nodejs/node/issues?q=state%3Aopen%20label%3A%22buffer%22
discussIssues opened for discussion and feedback.https://github.com/nodejs/node/issues?q=state%3Aopen%20label%3A%22discuss%22
securityIssues and PRs related to security.https://github.com/nodejs/node/issues?q=state%3Aopen%20label%3A%22security%22
https://github.com/feross
ferosshttps://github.com/feross
on Jan 13, 2016https://github.com/nodejs/node/issues/4660#issue-126343377
the Heartbleed bughttp://heartbleed.com/
bittorrent-dhthttps://www.npmjs.com/package/bittorrent-dht
@mafintoshhttps://github.com/mafintosh
bittorrent-dhthttps://www.npmjs.com/package/bittorrent-dht
the commithttps://github.com/feross/bittorrent-dht/commit/6c7da04025d5633699800a99ec3fbadf70ad35b8
Node Security Project disclosurehttps://nodesecurity.io/advisories/68
wshttps://www.npmjs.com/package/ws
wshttps://www.npmjs.com/package/ws
the releasehttps://github.com/websockets/ws/releases/tag/1.0.1
@3rd-Edenhttps://github.com/3rd-Eden
Node Security Project disclosurehttps://nodesecurity.io/advisories/67
a PRhttps://github.com/nodejs/node/pull/4514
Nexthttps://github.com/nodejs/node/issues/4660?timeline_page=1
https://github.com/feross
ferosshttps://github.com/feross
on Jan 13, 2016https://github.com/nodejs/node/issues/4660#issuecomment-171175697
safe-bufferhttps://github.com/feross/safe-buffer
https://github.com/JacksonTian
JacksonTianhttps://github.com/JacksonTian
on Jan 13, 2016https://github.com/nodejs/node/issues/4660#issuecomment-171177430
3b27dd5https://github.com/nodejs/node/commit/3b27dd5ce15942a054904b26e3dca295806038d8
silverwindhttps://github.com/silverwind
bufferIssues and PRs related to the buffer subsystem.https://github.com/nodejs/node/issues?q=state%3Aopen%20label%3A%22buffer%22
on Jan 13, 2016https://github.com/nodejs/node/issues/4660#event-513317155
https://github.com/rvagg
rvagghttps://github.com/rvagg
on Jan 13, 2016https://github.com/nodejs/node/issues/4660#issuecomment-171179774
unsafehttps://code.google.com/p/google-security-research/issues/detail?id=693
TrendMicrohttps://code.google.com/p/google-security-research/issues/detail?id=693
Fishrock123https://github.com/Fishrock123
discussIssues opened for discussion and feedback.https://github.com/nodejs/node/issues?q=state%3Aopen%20label%3A%22discuss%22
memoryIssues and PRs related to Node.js memory management or memory footprint.https://github.com/nodejs/node/issues?q=state%3Aopen%20label%3A%22memory%22
on Jan 13, 2016https://github.com/nodejs/node/issues/4660#event-513332847
https://github.com/trevnorris
trevnorrishttps://github.com/trevnorris
on Jan 13, 2016https://github.com/nodejs/node/issues/4660#issuecomment-171182733
https://github.com/feross
ferosshttps://github.com/feross
on Jan 13, 2016https://github.com/nodejs/node/issues/4660#issuecomment-171191020
@rvagghttps://github.com/rvagg
@trevnorrishttps://github.com/trevnorris
https://github.com/feross
ferosshttps://github.com/feross
on Jan 13, 2016https://github.com/nodejs/node/issues/4660#issuecomment-171192006
https://github.com/mscdex
mscdexhttps://github.com/mscdex
on Jan 13, 2016https://github.com/nodejs/node/issues/4660#issuecomment-171196839
https://github.com/ChALkeR
ChALkeRhttps://github.com/ChALkeR
on Jan 13, 2016https://github.com/nodejs/node/issues/4660#issuecomment-171197060
https://github.com/silverwind
silverwindhttps://github.com/silverwind
on Jan 13, 2016https://github.com/nodejs/node/issues/4660#issuecomment-171197651
https://github.com/feross
ferosshttps://github.com/feross
on Jan 13, 2016https://github.com/nodejs/node/issues/4660#issuecomment-171200278
https://github.com/silverwind
silverwindhttps://github.com/silverwind
on Jan 13, 2016https://github.com/nodejs/node/issues/4660#issuecomment-171201634
https://github.com/okdistribute
okdistributehttps://github.com/okdistribute
on Jan 13, 2016https://github.com/nodejs/node/issues/4660#issuecomment-171217895
https://github.com/Fishrock123
Fishrock123https://github.com/Fishrock123
on Jan 15, 2016https://github.com/nodejs/node/issues/4660#issuecomment-172043451
https://github.com/thejefflarson
thejefflarsonhttps://github.com/thejefflarson
on Jan 15, 2016https://github.com/nodejs/node/issues/4660#issuecomment-172044713
@Fishrock123https://github.com/Fishrock123
https://github.com/ChALkeR
ChALkeRhttps://github.com/ChALkeR
on Jan 15, 2016https://github.com/nodejs/node/issues/4660#issuecomment-172087228
Mongoose vulnerabilityhttps://github.com/Automattic/mongoose/issues/3764
POChttps://gist.github.com/ChALkeR/d4a8055625221b6e65f0
https://github.com/ChALkeR
ChALkeRhttps://github.com/ChALkeR
on Jan 15, 2016https://github.com/nodejs/node/issues/4660#issuecomment-172088123
@soldairhttps://github.com/soldair
soldair/node-floody@6c44722https://github.com/soldair/node-floody/commit/6c44722312131f4ac8a1af40f0f861c85efe01b0
https://github.com/jsha
jshahttps://github.com/jsha
on Jan 15, 2016https://github.com/nodejs/node/issues/4660#issuecomment-172116248
sequelize/sequelize@cbfaa4fhttps://github.com/sequelize/sequelize/commit/cbfaa4f0a135cfc55874c9bfc39ead2d85c417e9
https://github.com/rwaldron
rwaldronhttps://github.com/rwaldron
on Jan 16, 2016https://github.com/nodejs/node/issues/4660#issuecomment-172228186
@jasnellhttps://github.com/jasnell
proposalhttps://github.com/nodejs/node-eps/pull/4
ajfranzoiahttps://github.com/ajfranzoia
on Jan 17, 2016https://github.com/nodejs/node/issues/4660#event-517172170
security(data-types): force non-buffer blob values to string, nodejs/…https://github.com/ajfranzoia/sequelize/commit/37752312846da7cab7ca82d7c534ec870e4b3f45
nodejs/…https://github.com/nodejs/node/issues/4660
3775231https://github.com/ajfranzoia/sequelize/commit/37752312846da7cab7ca82d7c534ec870e4b3f45
rvagghttps://github.com/rvagg
ctc-agendahttps://github.com/nodejs/node/issues?q=state%3Aopen%20label%3A%22ctc-agenda%22
on Feb 24, 2016https://github.com/nodejs/node/issues/4660#event-563350437
https://github.com/jasnell
jasnellhttps://github.com/jasnell
on Mar 16, 2016https://github.com/nodejs/node/issues/4660#issuecomment-197404806
#4682https://github.com/nodejs/node/pull/4682
jasnellhttps://github.com/jasnell
completedhttps://github.com/nodejs/node/issues?q=is%3Aissue%20state%3Aclosed%20archived%3Afalse%20reason%3Acompleted
on Mar 16, 2016https://github.com/nodejs/node/issues/4660#event-592083152
https://github.com/mhart
mharthttps://github.com/mhart
on Mar 16, 2016https://github.com/nodejs/node/issues/4660#issuecomment-197410132
https://github.com/joepie91
joepie91https://github.com/joepie91
on Mar 16, 2016https://github.com/nodejs/node/issues/4660#issuecomment-197439400
https://github.com/ChALkeR
ChALkeRhttps://github.com/ChALkeR
on Mar 19, 2016https://github.com/nodejs/node/issues/4660#issuecomment-198653489
#5799https://github.com/nodejs/node/issues/5799
https://github.com/feross
ferosshttps://github.com/feross
on May 30, 2016https://github.com/nodejs/node/issues/4660#issuecomment-222420260
safe-bufferhttps://github.com/feross/safe-buffer
Acconuthttps://github.com/Acconut
on May 30, 2017https://github.com/nodejs/node/issues/4660#event-1102968646
Fix buffer initialization for Base64 encoding (#75)https://github.com/tus/tus-js-client/commit/66694b4a93c8f9a7cda5ee4ea52e3692df926ef4
#75https://github.com/tus/tus-js-client/pull/75
66694b4https://github.com/tus/tus-js-client/commit/66694b4a93c8f9a7cda5ee4ea52e3692df926ef4
Sign up for freehttps://github.com/signup?return_to=https://github.com/nodejs/node/issues/4660
Sign in to commenthttps://github.com/login?return_to=https://github.com/nodejs/node/issues/4660
bufferIssues and PRs related to the buffer subsystem.https://github.com/nodejs/node/issues?q=state%3Aopen%20label%3A%22buffer%22
discussIssues opened for discussion and feedback.https://github.com/nodejs/node/issues?q=state%3Aopen%20label%3A%22discuss%22
securityIssues and PRs related to security.https://github.com/nodejs/node/issues?q=state%3Aopen%20label%3A%22security%22
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.