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
|
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. |
|
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
| 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.
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.
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