Backport of: fc6343a79274b6a1e99037ebb131096e2da05306 from v8 upstream. Original commit message: Catch stack overflow in JSON.parse. BUG= Review URL: https://chromiumcodereview.appspot.com/11275039 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@12816 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 Reviewed-By: Fedor Indutny <email@example.com>
* openssl: update to 1.0.0m (CVE-2014-0224) * utf8: Prevent Node from sending invalid UTF-8 (Felix Geisendörfer) - *NOTE* this introduces a breaking change, previously you could construct invalid UTF-8 and invoke an error in a client that was expecting valid UTF-8, now unmatched surrogate pairs are replaced with the unknown UTF-8 character. To restore the old functionality simply have NODE_INVALID_UTF8 environment variable set. * tls: fix pool usage race (Fedor Indutny) * fs: close file if fstat() fails in readFile() (cjihrig)
Previously v8's WriteUtf8 function would produce invalid utf-8 output when encountering unmatched surrogate code units . The new REPLACE_INVALID_UTF8 option fixes that by replacing invalid code points with the unicode replacement character. : JS Strings are defined as arrays of 16 bit unsigned integers. There is no unicode enforcement, so one can easily end up with invalid unicode code unit sequences inside a string.
- https://codereview.chromium.org/121173009/ - https://code.google.com/p/v8/source/detail?r=18683 Note: The v8 test case did not cleanly apply, so it's missing from this patch. I'm assuming this is not a problem if the v8 test suite is not part of the node build / test system. If that's the case I'll fix it. Otherwise the test case will be integrated once v8 is upgraded.
When calling `encOut` in loop, `maybeInitFinished()` may invoke `clearOut`'s loop, leading to the writing of interleaved data (encrypted and cleartext) into the one shared pool. Move `maybeInitFinished()` out of the loop and add assertion for future. backport of 60f777d
* v8: Upgrade to 126.96.36.199 * crypto: clear openssl error stack when handled (Ben Noordhuis) * crypto: clear errors from verify failure (Timothy J Fontaine) * crypto: fix memory leak in LoadPKCS12 (Fedor Indutny) * http: provide backpressure for pipeline flood (isaacs) * http_parser: expose pause/resume method for parser (Timothy J Fontaine) * readline: pause stdin before turning off terminal raw mode (Daniel Chatfield)
Clear OpenSSL's error stack on return from Connection::HandleSSLError(). This stops stale errors from popping up later in the lifecycle of the SSL connection where they would cause spurious failures. This commit causes a 1-2% performance regression on `make bench-tls`. We'll address that in follow-up commits if possible but let's ensure correctness first. Backport of c6e2db2
If a client sends a lot more pipelined requests than we can handle, then we need to provide backpressure so that the client knows to back off. Do this by pausing both the stream and the parser itself when the responses are not being read by the downstream client. Backport of 085dd30
On windows, libuv will immediately make a `ReadConsole` call (in the thread pool) when a 'flowing' `uv_tty_t` handle is switched to line-buffered mode. That causes an immediate issue for some users, since libuv can't cancel the `ReadConsole` operation on Windows 8 / Server 2012 and up if the program switches back to raw mode later. But even if this will be fixed in libuv at some point, it's better to avoid the overhead of starting work in the thread pool and immediately cancelling it afther that. See also f34f1e3, where the same change is made for the opposite flow, e.g. move `resume()` after `_setRawMode(true)`. Fixes #5927 This is a backport of dfb0461 (see #5930) to the v0.8 branch.
Remove compiler switches from $(TOPLEVEL)/deps/v8/build/common.gypi, we set them globally in $(TOPLEVEL)/common.gypi. Commit 29d12c7 accidentally reintroduced the switches again. In particular, the 'cflags!': ['-O2','-Os'] section forced building V8 without any optimizations, resulting in a steep (~66%) performance drop on some benchmarks. Fixes #4191.