Skip to content

tls: convertProtocols() error handling - #23606

Closed
pugbyte wants to merge 5 commits into
nodejs:masterfrom
pugbyte:tls-convertProtocols-restrict-protocol-bytelength
Closed

tls: convertProtocols() error handling#23606
pugbyte wants to merge 5 commits into
nodejs:masterfrom
pugbyte:tls-convertProtocols-restrict-protocol-bytelength

Conversation

@pugbyte

Copy link
Copy Markdown

The convertProtocols() function now throws a range error when the byte
length of a protocol is too long to fit in a Buffer.

Also added a test case in test/parallel/test-tls-basic-validations.js
to cover this.

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
  • commit message follows commit guidelines

The convertProtocols() function now throws a range error when the byte
length of a protocol is too long to fit in a Buffer.
Also added a test case in test/parallel/test-tls-basic-validations.js
to cover this.
@nodejs-github-botnodejs-github-bot added the tls Issues and PRs related to the tls subsystem. label Oct 12, 2018
Comment threadlib/tls.js Outdated
Changed the byte length error message for protocol to correctly state
that the length must be <= 255 not < 255
Amended the test case in test/parallel/test-tls-basic-validations.js

@addaleaxaddaleax left a comment

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.

Thanks!

@addaleaxaddaleax added the author ready PRs that have at least one approval, no pending requests for changes, and a CI started. label Oct 12, 2018
@addaleax

Copy link
Copy Markdown
Member

CI: https://ci.nodejs.org/job/node-test-pull-request/17761/

We may or may not consider this semver-major; on the one hand, this adds a new error, on the other hand, output before this patch would have been completely broken and would have failed at another point.

@jasnell

Copy link
Copy Markdown
Member

hmm... I think we need to mark as semver-major but let's see if there's @nodejs/tsc consensus on downgrading it.

@jasnelljasnell added the semver-major PRs that contain breaking changes and should be released in the next major version. label Oct 12, 2018

@mcollinamcollina left a comment

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.

LGTM

@TrottTrott added the code-and-learn Issues related to the Code-and-Learn events and PRs submitted during the events. label Oct 12, 2018
@Trott

Copy link
Copy Markdown
Member

Comment threadtest/parallel/test-tls-basic-validations.js Outdated
@BridgeARBridgeAR removed the author ready PRs that have at least one approval, no pending requests for changes, and a CI started. label Oct 12, 2018
@BridgeAR

Copy link
Copy Markdown
Member

I don't think that this has to be semver major since it was broken before otherwise.

Also changed corresponding usage in lib/tls.js
Amended the test case in test/parallel/test-tls-basic-validations.js
Comment threadlib/tls.js Outdated
@Trott

Copy link
Copy Markdown
Member

@addaleaxaddaleax added the author ready PRs that have at least one approval, no pending requests for changes, and a CI started. label Oct 16, 2018
@addaleax

Copy link
Copy Markdown
Member

@Trott

Copy link
Copy Markdown
Member

I think this should land as patch rather than major. I think the reason is as stated by @BridgeAR above, but I'm willing to supply more detail to the argument if there's disagreement about this.

Comment threadlib/tls.js Outdated
var len = Buffer.byteLength(c);
if (len > 255) {
throw new ERR_OUT_OF_RANGE('', '<= 255', len, 'The byte length of the ' +
`protocol at index ${i} exceeds the maximum length.`);

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.

When looking at this signature it looks like a mistake that the first argument is an empty string.

I suggest to use the following instead:

ERR_OUT_OF_RANGE(str,range,input,replaceDefaultBoolean)

Using booleans as arguments is not great either but that way the first argument is at least used properly and the reader will hopefully be less surprised (as I would be). We might also use a different more expressive value than a boolean but that could be more error prone.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I've refactored as per your suggestion. Check it out.

@BridgeARBridgeAR removed the semver-major PRs that contain breaking changes and should be released in the next major version. label Oct 17, 2018
@BridgeAR

Copy link
Copy Markdown
Member

I removed the semver-major label due to the comments above. // cc @nodejs/tsc

@addaleax

Copy link
Copy Markdown
Member

Fresh CI to include the latest changes: https://ci.nodejs.org/job/node-test-pull-request/18020/

@Trott

Copy link
Copy Markdown
Member

Landed in cdba3c1.

Thanks for the contribution! 🎉

(If you're interested in other possible contributions to Node.js but don't have a good idea of where to start looking, some ideas are posted at https://www.nodetodo.org/next-steps/.)

targos pushed a commit that referenced this pull request Oct 24, 2018
The convertProtocols() function now throws a range error when the byte
length of a protocol is too long to fit in a Buffer.
Also added a test case in test/parallel/test-tls-basic-validations.js
to cover this.
PR-URL: #23606
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
@pugbyte

Copy link
Copy Markdown
Author

Thank you for the opportunity. This has been really eye-opening and I'll be much less shy about contributing to open-source projects in the future.

@MylesBorins

Copy link
Copy Markdown
Contributor

it seems like there was some debate regarding if this was Semver-Major or not. As such i'm unsure if it should be backported to LTS

thoughts?

codebytere pushed a commit that referenced this pull request Dec 13, 2018
The convertProtocols() function now throws a range error when the byte
length of a protocol is too long to fit in a Buffer.
Also added a test case in test/parallel/test-tls-basic-validations.js
to cover this.
PR-URL: #23606
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
MylesBorins pushed a commit that referenced this pull request Dec 26, 2018
The convertProtocols() function now throws a range error when the byte
length of a protocol is too long to fit in a Buffer.
Also added a test case in test/parallel/test-tls-basic-validations.js
to cover this.
PR-URL: #23606
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
@codebyterecodebytere mentioned this pull request Jan 4, 2019
codebytere added a commit that referenced this pull request Jan 29, 2019
* doc:
* add oyyd to collaborators (Ouyang Yadong) [#24300](#24300)
* tls:
* throw if protocol too long (Andre Jodat-Danbrani) [#23606](#23606)
codebytere added a commit that referenced this pull request Jan 29, 2019
* doc:
* add oyyd to collaborators (Ouyang Yadong) [#24300](#24300)
* tls:
* throw if protocol too long (Andre Jodat-Danbrani) [#23606](#23606)
PR-URL: #25346
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author readyPRs that have at least one approval, no pending requests for changes, and a CI started.code-and-learnIssues related to the Code-and-Learn events and PRs submitted during the events.tlsIssues and PRs related to the tls subsystem.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@pugbyte@addaleax@jasnell@Trott@BridgeAR@MylesBorins@mcollina@thefourtheye@codebytere@nodejs-github-bot