-
Notifications
You must be signed in to change notification settings - Fork 30.1k
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
tls: convertProtocols() error handling #23606
tls: convertProtocols() error handling #23606
Conversation
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.
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
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
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. |
hmm... I think we need to mark as semver-major but let's see if there's @nodejs/tsc consensus on downgrading it. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
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
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. |
lib/tls.js
Outdated
@@ -60,6 +63,10 @@ function convertProtocols(protocols) { | |||
const lens = new Array(protocols.length); | |||
const buff = Buffer.allocUnsafe(protocols.reduce((p, c, i) => { | |||
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.`); |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
I removed the semver-major label due to the comments above. // cc @nodejs/tsc |
Fresh CI to include the latest changes: https://ci.nodejs.org/job/node-test-pull-request/18020/ |
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/.) |
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>
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. |
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? |
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>
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>
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), orvcbuild test
(Windows) passes