build: add build flag for OSS-Fuzz integration
Refs: https://github.com/google/oss-fuzz/pull/3860 Fixes: https://github.com/nodejs/node/issues/33724 PR-URL: https://github.com/nodejs/node/pull/34761 Fixes: https://github.com/nodejs/node/issues/33724 Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Rich Trott <rtrott@gmail.com>
This commit is contained in:
parent
5d179cb2ec
commit
375b859428
@ -439,6 +439,11 @@ parser.add_option('--v8-options',
|
|||||||
dest='v8_options',
|
dest='v8_options',
|
||||||
help='v8 options to pass, see `node --v8-options` for examples.')
|
help='v8 options to pass, see `node --v8-options` for examples.')
|
||||||
|
|
||||||
|
parser.add_option('--with-ossfuzz',
|
||||||
|
action='store_true',
|
||||||
|
dest='ossfuzz',
|
||||||
|
help='Enables building of fuzzers. This command should be run in an OSS-Fuzz Docker image.')
|
||||||
|
|
||||||
parser.add_option('--with-arm-float-abi',
|
parser.add_option('--with-arm-float-abi',
|
||||||
action='store',
|
action='store',
|
||||||
dest='arm_float_abi',
|
dest='arm_float_abi',
|
||||||
@ -1827,6 +1832,9 @@ configure_intl(output)
|
|||||||
configure_static(output)
|
configure_static(output)
|
||||||
configure_inspector(output)
|
configure_inspector(output)
|
||||||
|
|
||||||
|
# Forward OSS-Fuzz settings
|
||||||
|
output['variables']['ossfuzz'] = b(options.ossfuzz)
|
||||||
|
|
||||||
# variables should be a root level element,
|
# variables should be a root level element,
|
||||||
# move everything else to target_defaults
|
# move everything else to target_defaults
|
||||||
variables = output['variables']
|
variables = output['variables']
|
||||||
|
33
node.gyp
33
node.gyp
@ -13,6 +13,7 @@
|
|||||||
'node_use_bundled_v8%': 'true',
|
'node_use_bundled_v8%': 'true',
|
||||||
'node_shared%': 'false',
|
'node_shared%': 'false',
|
||||||
'force_dynamic_crt%': 0,
|
'force_dynamic_crt%': 0,
|
||||||
|
'ossfuzz' : 'false',
|
||||||
'node_module_version%': '',
|
'node_module_version%': '',
|
||||||
'node_shared_brotli%': 'false',
|
'node_shared_brotli%': 'false',
|
||||||
'node_shared_zlib%': 'false',
|
'node_shared_zlib%': 'false',
|
||||||
@ -1170,6 +1171,38 @@
|
|||||||
} ],
|
} ],
|
||||||
]
|
]
|
||||||
}, # specialize_node_d
|
}, # specialize_node_d
|
||||||
|
{ # fuzz_url
|
||||||
|
'target_name': 'fuzz_url',
|
||||||
|
'type': 'executable',
|
||||||
|
'dependencies': [
|
||||||
|
'<(node_lib_target_name)',
|
||||||
|
],
|
||||||
|
'includes': [
|
||||||
|
'node.gypi'
|
||||||
|
],
|
||||||
|
'include_dirs': [
|
||||||
|
'src',
|
||||||
|
],
|
||||||
|
'defines': [
|
||||||
|
'NODE_ARCH="<(target_arch)"',
|
||||||
|
'NODE_PLATFORM="<(OS)"',
|
||||||
|
'NODE_WANT_INTERNALS=1',
|
||||||
|
],
|
||||||
|
'sources': [
|
||||||
|
'src/node_snapshot_stub.cc',
|
||||||
|
'src/node_code_cache_stub.cc',
|
||||||
|
'test/fuzzers/fuzz_url.cc',
|
||||||
|
],
|
||||||
|
'conditions': [
|
||||||
|
['OS=="linux"', {
|
||||||
|
'ldflags': [ '-fsanitize=fuzzer' ]
|
||||||
|
}],
|
||||||
|
# Ensure that ossfuzz flag has been set and that we are on Linux
|
||||||
|
[ 'OS!="linux" or ossfuzz!="true"', {
|
||||||
|
'type': 'none',
|
||||||
|
}],
|
||||||
|
],
|
||||||
|
}, # fuzz_url
|
||||||
{
|
{
|
||||||
'target_name': 'cctest',
|
'target_name': 'cctest',
|
||||||
'type': 'executable',
|
'type': 'executable',
|
||||||
|
11
test/fuzzers/fuzz_url.cc
Normal file
11
test/fuzzers/fuzz_url.cc
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include "node.h"
|
||||||
|
#include "node_internals.h"
|
||||||
|
#include "node_url.h"
|
||||||
|
|
||||||
|
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
|
||||||
|
node::url::URL url2(reinterpret_cast<const char*>(data), size);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user