Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release proposal: v0.12.11 (LTS) #5403

Merged
merged 15 commits into from
Mar 3, 2016
Merged

Release proposal: v0.12.11 (LTS) #5403

merged 15 commits into from
Mar 3, 2016

Conversation

rvagg
Copy link
Member

@rvagg rvagg commented Feb 24, 2016

Aiming for next week, the http_parser fix in here is pretty important and while I'd like to avoid cross-over with the v4.4.0 release to avoid confusion this really shouldn't be delayed too much.


Notable changes:

  • http_parser: Update to http-parser 2.3.2 to fix an unintentionally strict limitation of allowable header characters (James M Snell) http: fix http-parser regression (v0.12) #5241
  • domains:
    • Prevent an exit due to an exception being thrown rather than emitting an 'uncaughtException' event on the process object when no error handler is set on the domain within which an error is thrown and an 'uncaughtException' event listener is set on process. (Julien Gilli) domains: fix handling of uncaught exceptions #3885
    • Fix an issue where the process would not abort in the proper function call if an error is thrown within a domain with no error handler and --abort-on-uncaught-exception is used. (Julien Gilli) domains: fix handling of uncaught exceptions #3885

trevnorris and others added 11 commits February 11, 2016 11:29
Original commit message:

    api: introduce SealHandleScope

    When debugging Handle leaks in io.js we found it very convenient to be
    able to Seal some specific (root in our case) scope to prevent Handle
    allocations in it, and easily find leakage.

    R=yangguo
    BUG=

    Review URL: https://codereview.chromium.org/1079713002

    Cr-Commit-Position: refs/heads/master@{#27766}

Should help us identify and fix Handle leaks in core and user-space code.

PR-URL: #3945
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: James Snell <jasnell@gmail.com>
Helps to find Handle leaks in Debug mode.

Ref: a5244d3 "deps: backport 1f8555 from v8's upstream"

PR-URL: #3945
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: James Snell <jasnell@gmail.com>
The call to node::Environment::GetCurrent(Isolate*) makes the call to
v8::Isolate::GetCurrentContext(). Doing so creates a new handle that
bubbled to the v8::SealHandleScope().

PR-URL: #3945
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: James Snell <jasnell@gmail.com>
test-domain-exit-dispose-again had been written for node v0.10.x, and
was using the fact that callbacks scheduled with `process.nextTick`
wouldn't run if the domain attached to it was disposed.

This is not longer the case, and as a result the test would not catch
any regression: it would always pass.

This change rewrites that test to check that the current domain is
cleared properly when processing the rest of the timers list if a
timer's callback throws an error. This makes the test fail without the
original fix, and pass with the original fix, as expected.

PR: #3991
PR-URL: #3991
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
PR #3890 [1] introduced the variable ALLOW_INSECURE_SERVER_DHPARAM defined
in src/node_crypto.cc. However, if nodejs is built without OpenSSL support,
the build fails:
 error: ‘ALLOW_INSECURE_SERVER_DHPARAM’ was not declared in this scope
       ALLOW_INSECURE_SERVER_DHPARAM = true;

Fix this by using the preprocessor macro HAVE_OPENSSL to opt-out the use of
ALLOW_INSECURE_SERVER_DHPARAM in non-OpenSSL builds.

[1] #3890

PR-URL: #4201
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Rod Vagg <rod@vagg.org>
d1ba82a "fixed"
test-domain-exit-dispose-again by changing its logic to test that
process.domain was cleared properly in case an error was thrown from
a timer's callback.

However, it became clear when reviewing a recent change that refactors
lib/timers.js that it was not quite the intention of the original test.

Thus, this change adds the original implementation of
test-domain-exit-dispose-again back, with comments that make its
implementation easier to understand.

It also preserves the changes made by
d1ba82a, but it moves them to a new
test file named test-timers-reset-process-domain-on-throw.js.

PR: #4278
PR-URL: #4278
Reviewed-By: James M Snell <jasnell@gmail.com>
Fix node exiting due to an exception being thrown rather than emitting
an 'uncaughtException' event on the process object when:
1. no error handler is set on the domain within which an error is thrown
2. an 'uncaughtException' event listener is set on the process

Also fix an issue where the process would not abort in the proper
function call if an error is thrown within a domain with no error
handler and --abort-on-uncaught-exception is used.

Fixes #3607 and #3653.

PR: #3885
PR-URL: #3885
Reviewed-By: James M Snell <jasnell@gmail.com>
This commit prevents child process stdio streams from being
automatically flushed on child process exit/close if a 'readable'
event handler has been attached at the time of exit.

Without this, child process stdio data can be lost if the process
exits quickly and a `read()` (e.g. from a 'readable' handler)
hasn't had the chance to get called yet.

Fixes: #5034
PR-URL: #5037
Reviewed-By: James M Snell <jasnell@gmail.com>
It is possible to cause a resource leak in SharedHandle. This commit
fixes the leak.

Fixes: #2510
PR-URL: #5152
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: James M Snell <jasnell@gmail.com>
It is possible that the internal handleMessage() might try to send to
a channel that has been closed. The result can be an AssertionError.
Guard against this.

Fixes: #4205
PR-URL: #5153
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Fixes http-parser regression with IS_HEADER_CHAR check
Add test case for obstext characters (> 0x80) in header

PR-URL: #5241
Reviewed-By: Сковорода Никита Андреевич <chalkerx@gmail.com>
Reviewed-By: Rod Vagg <rod@vagg.org>
@silverwind
Copy link
Contributor

LGTM except nit above.

@rvagg rvagg force-pushed the v0.12.11-proposal branch 2 times, most recently from 7b671f0 to dac9f20 Compare February 26, 2016 10:37
@rvagg
Copy link
Member Author

rvagg commented Feb 26, 2016

nit fixed, thanks @silverwind

RC 1 is available @ https://nodejs.org/download/rc/v0.12.11-rc.1/

node-gyp doesn't understand non-release builds so won't successfully download headers for you when compiling native addons. But you can shortcut this and install them yourself by running the following:

mkdir -p ~/.node-gyp/0.12.11-rc.1 && \
curl -sL https://nodejs.org/download/rc/v0.12.11-rc.1/node-v0.12.11-rc.1-headers.tar.gz | \
  tar zx --strip=1 -C ~/.node-gyp/0.12.11-rc.1/ && \
echo 9 > ~/.node-gyp/0.12.11-rc.1/installVersion

(Sorry Windows users, I don't have your equivalent handy but it's basically the same procedure with paths changed and with manual execution).

When that's done, npm install will compile native addons against this version of Node and you can test it out as if it's a proper release.

PR-URL: #5509
Reviewed-By: Fedor Indutny <fedor@indutny.com>
@jasnell
Copy link
Member

jasnell commented Mar 2, 2016

LGTM

PR-URL: #5401
Reviewed-By: Johan Bergström <bugs@bergstroem.nu>
Reviewed-By: kahwee
Reviewed-By: fhemberger
Reviewed-By: Сковорода Никита Андреевич <chalkerx@gmail.com>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
@rvagg
Copy link
Member Author

rvagg commented Mar 3, 2016

Updated and built here: https://ci.nodejs.org/job/iojs+release/440/ - I need to do some manual smoke testing with these but any help would be appreciated (follow the link to your platform's build slave to find a tarball or installer you can download). Will release tomorrow / Wednesday (US).

Shigeki Ohtsu and others added 2 commits March 3, 2016 09:53
Doc descriptions related to SSLv2 are no longer needed.

Fixes: #5529
PR-URL: #5541
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Notable changes:

* http_parser: Update to http-parser 2.3.2 to fix an unintentionally
  strict limitation of allowable header characters.
  (James M Snell) #5241
* domains:
  - Prevent an exit due to an exception being thrown rather than
    emitting an 'uncaughtException' event on the `process` object when
    no error handler is set on the domain within which an error is
    thrown and an 'uncaughtException' event listener is set on
    `process`. (Julien Gilli) #3885
  - Fix an issue where the process would not abort in the proper
    function call if an error is thrown within a domain with no error
    handler and `--abort-on-uncaught-exception` is used.
    (Julien Gilli) #3885
* openssl: Upgrade from 1.0.2f to 1.0.2g
  (Ben Noordhuis) #5509
  - Fix a double-free defect in parsing malformed DSA keys that may
    potentially be used for DoS or memory corruption attacks. It is
    likely to be very difficult to use this defect for a practical
    attack and is therefore considered low severity for Node.js users.
    More info is available at
    https://www.openssl.org/news/vulnerabilities.html#2016-0705
  - Fix a defect that can cause memory corruption in certain very rare
    cases relating to the internal `BN_hex2bn()` and `BN_dec2bn()`
    functions. It is believed that Node.js is not invoking the code
    paths that use these functions so practical attacks via Node.js
    using this defect are _unlikely_ to be possible. More info is
    available at
    https://www.openssl.org/news/vulnerabilities.html#2016-0797
  - Fix a defect that makes the CacheBleed Attack
    (https://ssrg.nicta.com.au/projects/TS/cachebleed/) possible. This
    defect enables attackers to execute side-channel attacks leading
    to the potential recovery of entire RSA private keys. It only
    affects the Intel Sandy Bridge (and possibly older)
    microarchitecture when using hyper-threading. Newer
    microarchitectures, including Haswell, are unaffected. More info
    is available at
    https://www.openssl.org/news/vulnerabilities.html#2016-0702
@rvagg
Copy link
Member Author

rvagg commented Mar 3, 2016

cherry-picked #5541 into this so rebuilding binaries @ https://ci.nodejs.org/job/iojs+release/441/
smoke testing looks good, if incomplete compared to v4+ unfortunately, but the delta is pretty small here thankfull.

@bnoordhuis
Copy link
Member

@rvagg Can you pull in 93ffe76 ("crypto,tls: remove SSLv2 support") as well?

@rvagg rvagg merged commit e8c6a58 into v0.12 Mar 3, 2016
@rvagg rvagg deleted the v0.12.11-proposal branch March 3, 2016 22:23
@rvagg
Copy link
Member Author

rvagg commented Mar 3, 2016

Whoa, that didn't land! I think we might have had a race-condition with git, I had to do some creative massaging of v0.12, v0.12-staging and v0.12-11-proposal and I suspect that commit landed between my pull and a force push as I was cleaning up.

So I'm going to need to do a v0.12.12 just for this.

rvagg added a commit that referenced this pull request Mar 4, 2016
Notable changes:

* http_parser: Update to http-parser 2.3.2 to fix an unintentionally
  strict limitation of allowable header characters.
  (James M Snell) #5241
* domains:
  - Prevent an exit due to an exception being thrown rather than
    emitting an 'uncaughtException' event on the `process` object when
    no error handler is set on the domain within which an error is
    thrown and an 'uncaughtException' event listener is set on
    `process`. (Julien Gilli) #3885
  - Fix an issue where the process would not abort in the proper
    function call if an error is thrown within a domain with no error
    handler and `--abort-on-uncaught-exception` is used.
    (Julien Gilli) #3885
* openssl: Upgrade from 1.0.2f to 1.0.2g
  (Ben Noordhuis) #5509
  - Fix a double-free defect in parsing malformed DSA keys that may
    potentially be used for DoS or memory corruption attacks. It is
    likely to be very difficult to use this defect for a practical
    attack and is therefore considered low severity for Node.js users.
    More info is available at
    https://www.openssl.org/news/vulnerabilities.html#2016-0705
  - Fix a defect that can cause memory corruption in certain very rare
    cases relating to the internal `BN_hex2bn()` and `BN_dec2bn()`
    functions. It is believed that Node.js is not invoking the code
    paths that use these functions so practical attacks via Node.js
    using this defect are _unlikely_ to be possible. More info is
    available at
    https://www.openssl.org/news/vulnerabilities.html#2016-0797
  - Fix a defect that makes the CacheBleed Attack
    (https://ssrg.nicta.com.au/projects/TS/cachebleed/) possible. This
    defect enables attackers to execute side-channel attacks leading
    to the potential recovery of entire RSA private keys. It only
    affects the Intel Sandy Bridge (and possibly older)
    microarchitecture when using hyper-threading. Newer
    microarchitectures, including Haswell, are unaffected. More info
    is available at
    https://www.openssl.org/news/vulnerabilities.html#2016-0702

PR-URL: #5403
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants