-
Notifications
You must be signed in to change notification settings - Fork 29.6k
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
src: add --use-bundled-ca --use-openssl-ca check #12087
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3637,6 +3637,8 @@ static void ParseArgs(int* argc, | |
const char** new_v8_argv = new const char*[nargs]; | ||
const char** new_argv = new const char*[nargs]; | ||
const char** local_preload_modules = new const char*[nargs]; | ||
bool use_bundled_ca = false; | ||
bool use_openssl_ca = false; | ||
|
||
for (unsigned int i = 0; i < nargs; ++i) { | ||
new_exec_argv[i] = nullptr; | ||
|
@@ -3751,7 +3753,9 @@ static void ParseArgs(int* argc, | |
default_cipher_list = arg + 18; | ||
} else if (strncmp(arg, "--use-openssl-ca", 16) == 0) { | ||
ssl_openssl_cert_store = true; | ||
use_openssl_ca = true; | ||
} else if (strncmp(arg, "--use-bundled-ca", 16) == 0) { | ||
use_bundled_ca = true; | ||
ssl_openssl_cert_store = false; | ||
#if NODE_FIPS_MODE | ||
} else if (strcmp(arg, "--enable-fips") == 0) { | ||
|
@@ -3786,6 +3790,16 @@ static void ParseArgs(int* argc, | |
index += args_consumed; | ||
} | ||
|
||
#if HAVE_OPENSSL | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm wondering if we shouldn't just error out immediately if There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think the code already does that, since the option is only recognised and parsed if |
||
if (use_openssl_ca && use_bundled_ca) { | ||
fprintf(stderr, | ||
"%s: either --use-openssl-ca or --use-bundled-ca can be used, " | ||
"not both\n", | ||
argv[0]); | ||
exit(9); | ||
} | ||
#endif | ||
|
||
// Copy remaining arguments. | ||
const unsigned int args_left = nargs - index; | ||
memcpy(new_argv + new_argc, argv + index, args_left * sizeof(*argv)); | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
'use strict'; | ||
// This test checks the usage of --use-bundled-ca and --use-openssl-ca arguments | ||
// to verify that both are not used at the same time. | ||
const common = require('../common'); | ||
if (!common.hasCrypto) { | ||
common.skip('missing crypto'); | ||
return; | ||
} | ||
const assert = require('assert'); | ||
const os = require('os'); | ||
const childProcess = require('child_process'); | ||
const result = childProcess.spawnSync(process.execPath, [ | ||
'--use-bundled-ca', | ||
'--use-openssl-ca', | ||
'-p', 'process.version'], | ||
{encoding: 'utf8'}); | ||
|
||
assert.strictEqual(result.stderr, | ||
process.execPath + ': either --use-openssl-ca or ' + | ||
'--use-bundled-ca can be used, not both' + os.EOL); | ||
assert.strictEqual(result.status, 9); | ||
|
||
const useBundledCA = childProcess.spawnSync(process.execPath, [ | ||
'--use-bundled-ca', | ||
'-p', 'process.version']); | ||
assert.strictEqual(useBundledCA.status, 0); | ||
|
||
const useOpenSSLCA = childProcess.spawnSync(process.execPath, [ | ||
'--use-openssl-ca', | ||
'-p', 'process.version']); | ||
assert.strictEqual(useOpenSSLCA.status, 0); |
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.
using a simple bit field might work also. not critical tho... but if you did...
You could get by with only a single variable and a single condition check when reporting the error.
It's extremely minor so feel free to ignore tho.
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 like that, I'll give that a go. Thx
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.
@jasnell This seems more opaque, would this be enough of a speed increase to warrant the loss of clarity?
cc/ @sam-github from #12087 (comment)
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 generally find it more readable but that's just me ;-) .. I know there are broadly different opinions about the use of bitfields ;-)