Merge remote-tracking branch 'ry/v0.8' into master
authorisaacs <i@izs.me>
Fri, 18 Jan 2013 20:58:16 +0000 (12:58 -0800)
committerisaacs <i@izs.me>
Fri, 18 Jan 2013 20:58:16 +0000 (12:58 -0800)
Conflicts:
AUTHORS
ChangeLog
src/node_version.h
test/simple/test-buffer.js

1  2 
AUTHORS
ChangeLog
lib/buffer.js
lib/http.js
src/node_buffer.cc
test/simple/test-buffer.js
tools/install.py

diff --cc AUTHORS
+++ b/AUTHORS
@@@ -385,21 -375,5 +385,23 @@@ Kai Sasaki Lewuathe <sasaki_kai@lewuath
  Nicolas Chambrier <naholyr@gmail.com>
  Tim Bradshaw <tfb@cley.com>
  Johannes Ewald <mail@johannesewald.de>
+ Chris Dent <chris.dent@gmail.com>
+ Dan Milon <danmilon@gmail.com>
 +Brandon Philips <brandon.philips@rackspace.com>
 +Frederico Silva <frederico.silva@gmail.com>
 +Jan Wynholds <jan@rootmusic.com>
 +Girish Ramakrishnan <girish@forwardbias.in>
 +Anthony Pesch <anthony@usamp.com>
 +Stephen Gallagher <sgallagh@redhat.com>
 +Sergey Kholodilov <serghol@gmail.com>
 +Tim Kuijsten <tim@netsend.nl>
 +Michael Axiak <mike@axiak.net>
 +Chad Rhyner <chadrhyner@gmail.com>
 +Ben Taber <ben.taber@gmail.com>
 +Luke Arduini <luke.arduini@me.com>
 +Luke Bayes <lbayes@patternpark.com>
 +Nirk Niggler <nirk.niggler@gmail.com>
 +James Hight <james@zavoo.com>
 +Mike Harsch <mike@harschsystems.com>
 +Alexandr Emelin <frvzmb@gmail.com>
 +James Campos <james.r.campos@gmail.com>
diff --cc ChangeLog
+++ b/ChangeLog
 -2013.01.18, Version 0.8.18 (Stable)
 +2013.01.18, Version 0.9.7 (Unstable)
 +
 +* V8: Upgrade to 3.15.11.7
 +
 +* npm: Upgrade to 1.2.2
 +
 +* punycode: Upgrade to 1.2.0 (Mathias Bynens)
 +
 +* repl: make built-in modules available by default (Felix Böhm)
 +
 +* windows: add support for '_Total' perf counters (Scott Blomquist)
 +
 +* cluster: make --prof work for workers (Ben Noordhuis)
 +
 +* child_process: do not keep list of sent sockets (Fedor Indutny)
 +
 +* tls: Follow RFC6125 more strictly (Fedor Indutny)
 +
 +* buffer: floating point read/write improvements (Trevor Norris)
 +
 +* TypedArrays: Improve dataview perf without endian param (Dean McNamee)
 +
 +* module: assert require() called with a non-empty string (Felix Böhm, James Campos)
 +
 +* stdio: Set readable/writable flags properly (isaacs)
 +
 +* stream: Properly handle large reads from push-streams (isaacs)
 +
 +
 +2013.01.11, Version 0.9.6 (Unstable), 9313fdc71ca8335d5e3a391c103230ee6219b3e2
 +
 +* V8: update to 3.15.11.5
 +
 +* node: remove ev-emul.h (Ben Noordhuis)
 +
 +* path: make basename and extname ignore trailing slashes (Bert Belder)
 +
 +* typed arrays: fix sunos signed/unsigned char issue (Ben Noordhuis)
 +
 +* child_process: Fix {stdio:'inherit'} regression (Ben Noordhuis)
 +
 +* child_process: Fix pipe() from child stdio streams  (Maciej Małecki)
 +
 +* child_process: make fork() execPath configurable (Bradley Meck)
 +
 +* stream: Add readable.push(chunk) method (isaacs)
 +
 +* dtrace: x64 ustack helper (Fedor Indutny)
 +
 +* repl: fix floating point number parsing (Nirk Niggler)
 +
 +* repl: allow overriding builtins (Ben Noordhuis)
 +
 +* net: add localAddress and localPort to Socket (James Hight)
 +
 +* fs: make pool size coincide with ReadStream bufferSize (Shigeki Ohtsu)
 +
 +* typed arrays: implement load and store swizzling (Dean McNamee)
 +
 +* windows: fix perfctr crash on XP and 2003 (Scott Blomquist)
 +
 +* dgram: fix double implicit bind error (Ben Noordhuis)
 +
 +
 +2012.12.30, Version 0.9.5 (Unstable), 01994e8119c24f2284bac0779b32acb49c95bee7
 +
 +* assert: improve support for new execution contexts (lukebayes)
 +
 +* domain: use camelCase instead of snake_case (isaacs)
 +
 +* domain: Do not use uncaughtException handler (isaacs)
 +
 +* fs: make 'end' work with ReadStream without 'start' (Ben Noordhuis)
 +
 +* https: optimize createConnection() (Ryunosuke SATO)
 +
 +* buffer: speed up base64 encoding by 20% (Ben Noordhuis)
 +
 +* doc: Colorize API stabilitity index headers in docs (Luke Arduini)
 +
 +* net: socket.readyState corrections (bentaber)
 +
 +* http: Performance enhancements for http under streams2 (isaacs)
 +
 +* stream: fix to emit end event on http.ClientResponse (Shigeki Ohtsu)
 +
 +* stream: fix event handler leak in readstream pipe and unpipe (Andreas Madsen)
 +
 +* build: Support ./configure --tag switch (Maciej Małecki)
 +
 +* repl: don't touch `require.cache` (Nathan Rajlich)
 +
 +* node: Emit 'exit' event when exiting for an uncaught exception (isaacs)
 +
 +
 +2012.12.21, Version 0.9.4 (Unstable), d86d83c75f6343b5368bb7bd328b4466a035e1d4
 +
 +* streams: Update all streaming interfaces to use new classes (isaacs)
 +
 +* node: remove idle gc (Ben Noordhuis)
 +
 +* http: protect against response splitting attacks (Bert Belder)
 +
 +* fs: Raise error when null bytes detected in paths (isaacs)
 +
 +* fs: fix 'object is not a function' callback errors (Ben Noordhuis)
 +
 +* fs: add autoClose=true option to fs.createReadStream (Farid Neshat)
 +
 +* process: add getgroups(), setgroups(), initgroups() (Ben Noordhuis)
 +
 +* openssl: optimized asm code on x86 and x64 (Bert Belder)
 +
 +* crypto: fix leak in GetPeerCertificate (Fedor Indutny)
 +
 +* add systemtap support (Jan Wynholds)
 +
 +* windows: add ETW and PerfCounters support (Scott Blomquist)
 +
 +* windows: fix normalization of UNC paths (Bert Belder)
 +
 +* crypto: fix ssl error handling (Sergey Kholodilov)
 +
 +* node: remove eio-emul.h (Ben Noordhuis)
 +
 +* os: add os.endianness() function (Nathan Rajlich)
 +
 +* readline: don't emit "line" events with a trailing '\n' char (Nathan Rajlich)
 +
 +* build: add configure option to generate xcode build files (Timothy J Fontaine)
 +
 +* build: allow linking against system libuv, cares, http_parser (Stephen Gallagher)
 +
 +* typed arrays: add slice() support to ArrayBuffer (Anthony Pesch)
 +
 +* debugger: exit and kill child on SIGTERM or SIGHUP (Fedor Indutny)
 +
 +* url: url.format escapes delimiters in path and query (J. Lee Coltrane)
 +
 +
 +2012.10.24, Version 0.9.3 (Unstable), 1ed4c6776e4f52956918b70565502e0f8869829d
 +
 +* V8: Upgrade to 3.13.7.4
 +
 +* crypto: Default to buffers instead of binary strings (isaacs, Fedor Indutny)
 +
 +* crypto: add getHashes() and getCiphers() (Ben Noordhuis)
 +
 +* unix: add custom thread pool, remove libeio (Ben Noordhuis)
 +
 +* util: make `inspect()` accept an "options" argument (Nathan Rajlich)
 +
 +* https: fix renegotation attack protection (Ben Noordhuis)
 +
 +* cluster: make 'listening' handler see actual port (Aaditya Bhatia)
 +
 +* windows: use USERPROFILE to get the user's home dir (Bert Belder)
 +
 +* path: add platform specific path delimiter (Paul Serby)
 +
 +* http: add response.headersSent property (Pavel Lang)
 +
 +* child_process: make .fork()'d child auto-exit (Ben Noordhuis)
 +
 +* events: add 'removeListener' event (Ben Noordhuis)
 +
 +* string_decoder: Add 'end' method, do base64 properly (isaacs)
 +
 +* buffer: include encoding value in exception when invalid (Ricky Ng-Adam)
 +
 +* http: make http.ServerResponse no longer emit 'end' (isaacs)
 +
 +* streams: fix pipe is destructed by 'end' from destination (koichik)
 +
 +
 +2012.09.17, Version 0.9.2 (Unstable), 6e2055889091a424fbb5c500bc3ab9c05d1c28b4
 +
 +* http_parser: upgrade to ad3b631
 +
 +* openssl: upgrade 1.0.1c
 +
 +* darwin: use FSEvents to watch directory changes (Fedor Indutny)
 +
 +* unix: support missing API on NetBSD (Shigeki Ohtsu)
 +
 +* unix: fix EMFILE busy loop (Ben Noordhuis)
 +
 +* windows: un-break writable tty handles (Bert Belder)
 +
 +* windows: map WSAESHUTDOWN to UV_EPIPE (Bert Belder)
 +
 +* windows: make spawn with custom environment work again (Bert Belder)
 +
 +* windows: map ERROR_DIRECTORY to UV_ENOENT (Bert Belder)
 +
 +* tls, https: validate server certificate by default (Ben Noordhuis)
 +
 +* tls, https: throw exception on missing key/cert (Ben Noordhuis)
 +
 +* tls: async session storage (Fedor Indutny)
 +
 +* installer: don't install header files (Ben Noordhuis)
 +
 +* buffer: implement Buffer.prototype.toJSON() (Nathan Rajlich)
 +
 +* buffer: added support for writing NaN and Infinity (koichik)
 +
 +* http: make http.ServerResponse emit 'end' (Ben Noordhuis)
 +
 +* build: ./configure --ninja (Ben Noordhuis, Timothy J Fontaine)
 +
 +* installer: fix --without-npm (Ben Noordhuis)
 +
 +* cli: make -p equivalent to -pe (Ben Noordhuis)
 +
 +* url: Go much faster by using Url class (isaacs)
 +
 +
 +2012.08.28, Version 0.9.1 (Unstable), e6ce259d2caf338fec991c2dd447de763ce99ab7
 +
 +* buffer: Add Buffer.isEncoding(enc) to test for valid encoding values (isaacs)
 +
 +* Raise UV_ECANCELED on premature close. (Ben Noordhuis)
 +
 +* Remove c-ares from libuv, move to a top-level node dependency (Bert Belder)
 +
 +* ref/unref for all HandleWraps, timers, servers, and sockets (Timothy J Fontaine)
 +
 +* addon: remove node-waf, superseded by node-gyp (Ben Noordhuis)
 +
 +* child_process: emit error on exec failure (Ben Noordhuis)
 +
 +* cluster: do not use internal server API (Andreas Madsen)
 +
 +* constants: add O_DIRECT (Ian Babrou)
 +
 +* crypto: add sync interface to crypto.pbkdf2() (Ben Noordhuis)
 +
 +* darwin: emulate fdatasync() (Fedor Indutny)
 +
 +* dgram: make .bind() always asynchronous (Ben Noordhuis)
 +
 +* events: Make emitter.listeners() side-effect free (isaacs, Joe Andaverde)
 +
 +* fs: Throw early on invalid encoding args (isaacs)
 +
 +* fs: fix naming of truncate/ftruncate functions (isaacs)
 +
 +* http: bubble up parser errors to ClientRequest (Brian White)
 +
 +* linux: improve cpuinfo parser on ARM and MIPS (Ben Noordhuis)
 +
 +* net: add support for IPv6 addresses ending in :: (Josh Erickson)
 +
 +* net: support Server.listen(Pipe) (Andreas Madsen)
 +
 +* node: don't scan add-on for "init" symbol (Ben Noordhuis)
 +
 +* remove process.uvCounters() (Ben Noordhuis)
 +
 +* repl: console writes to repl rather than process stdio (Nathan Rajlich)
 +
 +* timers: implement setImmediate (Timothy J Fontaine)
 +
 +* tls: fix segfault in pummel/test-tls-ci-reneg-attack (Ben Noordhuis)
 +
 +* tools: Move gyp addon tools to node-gyp (Nathan Rajlich)
 +
 +* unix: preliminary signal handler support (Ben Noordhuis)
 +
 +* unix: remove dependency on ev_child (Ben Noordhuis)
 +
 +* unix: work around darwin bug, don't poll() on pipe (Fedor Indutny)
 +
 +* util: Formally deprecate util.pump() (Ben Noordhuis)
 +
 +* windows: make active and closing handle state independent (Bert Belder)
 +
 +* windows: report spawn errors to the exit callback (Bert Belder)
 +
 +* windows: signal handling support with uv_signal_t (Bert Belder)
 +
 +
 +2012.07.20, Version 0.9.0 (Unstable), f9b237f478c372fd55e4590d7399dcd8f25f3603
 +
 +* punycode: update to v1.1.1 (Mathias Bynens)
 +
 +* c-ares: upgrade to 1.9.0 (Saúl Ibarra Corretgé)
 +
 +* dns: ignore rogue DNS servers reported by windows (Saúl Ibarra Corretgé)
 +
 +* unix: speed up uv_async_send() (Ben Noordhuis)
 +
 +* darwin: get cpu model correctly on mac (Xidorn Quan)
 +
 +* nextTick: Handle tick callbacks before any other I/O (isaacs)
 +
 +* Enable color customization of `util.inspect` (Pavel Lang)
 +
 +* tls: Speed and memory improvements (Fedor Indutny)
 +
 +* readline: Use one history item for reentered line (Vladimir Beloborodov)
 +
 +* Fix #3521 Make process.env more like a regular Object (isaacs)
 +
 +
++2013.01.18, Version 0.8.18 (Stable), 2c4eef0d972838c51999d32c0d251857a713dc18
+ * npm: Upgrade to v1.2.2
+ * dns: make error message match errno (Dan Milon)
+ * tls: follow RFC6125 more stricly (Fedor Indutny)
+ * buffer: reject negative SlowBuffer offsets (Ben Noordhuis)
+ * install: add simplejson fallback (Chris Dent)
+ * http: fix "Cannot call method 'emit' of null" (Ben Noordhuis)
  2013.01.09, Version 0.8.17 (Stable), c50c33e9397d7a0a8717e8ce7530572907c054ad
  
  * npm: Upgrade to v1.2.0
diff --cc lib/buffer.js
Simple merge
diff --cc lib/http.js
Simple merge
Simple merge
@@@ -813,46 -747,46 +813,91 @@@ assert.throws(function() 
    new Buffer(0xFFFFFFFFF);
  }, TypeError);
  
 +
 +// attempt to overflow buffers, similar to previous bug in array buffers
 +assert.throws(function() {
 +  var buf = new Buffer(8);
 +  buf.readFloatLE(0xffffffff);
 +}, /Trying to access beyond buffer length/);
 +
 +assert.throws(function() {
 +  var buf = new Buffer(8);
 +  buf.writeFloatLE(0.0, 0xffffffff);
 +}, /Trying to access beyond buffer length/);
 +
 +assert.throws(function() {
 +  var buf = new SlowBuffer(8);
 +  buf.readFloatLE(0xffffffff);
 +}, /Trying to read beyond buffer length/);
 +
 +assert.throws(function() {
 +  var buf = new SlowBuffer(8);
 +  buf.writeFloatLE(0.0, 0xffffffff);
 +}, /Trying to write beyond buffer length/);
 +
 +
 +// ensure negative values can't get past offset
 +assert.throws(function() {
 +  var buf = new Buffer(8);
 +  buf.readFloatLE(-1);
 +}, /offset is not uint/);
 +
 +assert.throws(function() {
 +  var buf = new Buffer(8);
 +  buf.writeFloatLE(0.0, -1);
 +}, /offset is not uint/);
 +
 +assert.throws(function() {
 +  var buf = new SlowBuffer(8);
 +  buf.readFloatLE(-1);
 +}, /offset is not uint/);
 +
 +assert.throws(function() {
 +  var buf = new SlowBuffer(8);
 +  buf.writeFloatLE(0.0, -1);
 +}, /offset is not uint/);
++
++
+ // SlowBuffer sanity checks.
+ assert.throws(function() {
+   var len = 0xfffff;
+   var sbuf = new SlowBuffer(len);
+   var buf = new Buffer(sbuf, len, 0);
+   SlowBuffer.makeFastBuffer(sbuf, buf, -len, len);  // Should throw.
+   for (var i = 0; i < len; ++i) buf[i] = 0x42;      // Try to force segfault.
+ }, RangeError);
+ assert.throws(function() {
+   var len = 0xfffff;
+   var sbuf = new SlowBuffer(len);
+   var buf = new Buffer(sbuf, len, -len);           // Should throw.
+   for (var i = 0; i < len; ++i) buf[i] = 0x42;     // Try to force segfault.
+ }, RangeError);
+ assert.throws(function() {
+   var len = 0xfffff;
+   var sbuf = new SlowBuffer(len);
+   sbuf = sbuf.slice(-len);                          // Should throw.
+   for (var i = 0; i < len; ++i) sbuf[i] = 0x42;     // Try to force segfault.
+ }, RangeError);
+ assert.throws(function() {
+   var sbuf = new SlowBuffer(1);
+   var buf = new Buffer(sbuf, 1, 0);
+   buf.length = 0xffffffff;
+   buf.slice(0xffffff0, 0xffffffe);                  // Should throw.
+ }, Error);
+ assert.throws(function() {
+   var sbuf = new SlowBuffer(8);
+   var buf = new Buffer(sbuf, 8, 0);
+   buf.slice(-8);  // Should throw. Throws Error instead of RangeError
+                   // for the sake of v0.8 compatibility.
+ }, Error);
+ assert.throws(function() {
+   var sbuf = new SlowBuffer(16);
+   var buf = new Buffer(sbuf, 8, 8);
+   buf.slice(-8);  // Should throw. Throws Error instead of RangeError
+                   // for the sake of v0.8 compatibility.
+ }, Error);
Simple merge