File tree Expand file tree Collapse file tree 1 file changed +13
-1
lines changed
Expand file tree Collapse file tree 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(
100100 if (ReadFileSync(&package_config.raw_json, path.data()) < 0) {
101101 return nullptr;
102102 }
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
103115
104116 simdjson::ondemand::document document;
105117 simdjson::ondemand::object main_object;
106118 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);
108120
109121 const auto throw_invalid_package_config = [error_context, path, realm]() {
110122 if (error_context == nullptr) {
You can’t perform that action at this time.
0 commit comments