Commit 7853462 1 parent 10b68ed commit 7853462 Copy full SHA for 7853462
File tree 1 file changed +13
-1
lines changed
1 file changed +13
-1
lines changed Original file line number Diff line number Diff line change @@ -100,11 +100,23 @@ const BindingData::PackageConfig* BindingData::GetPackageJSON(
100
100
if (ReadFileSync (&package_config.raw_json , path.data ()) < 0 ) {
101
101
return nullptr ;
102
102
}
103
+ // In some systems, std::string is annotated to generate an
104
+ // AddressSanitizer: container-overflow error when reading beyond the end of
105
+ // the string even when we are still within the capacity of the string.
106
+ // https://github.com/google/sanitizers/wiki/AddressSanitizerContainerOverflow
107
+ // https://github.com/nodejs/node/issues/55584
108
+ // The next lines are a workaround to avoid this false positive.
109
+ size_t json_length = package_config.raw_json .size ();
110
+ package_config.raw_json .append (simdjson::SIMDJSON_PADDING, ' ' );
111
+ simdjson::padded_string_view json_view (package_config.raw_json .data (),
112
+ json_length,
113
+ package_config.raw_json .size ());
114
+ // End of workaround
103
115
104
116
simdjson::ondemand::document document;
105
117
simdjson::ondemand::object main_object;
106
118
simdjson::error_code error =
107
- binding_data->json_parser .iterate(package_config. raw_json ).get (document);
119
+ binding_data->json_parser .iterate(json_view ).get (document);
108
120
109
121
const auto throw_invalid_package_config = [error_context, path, realm]() {
110
122
if (error_context == nullptr ) {
You can’t perform that action at this time.
0 commit comments