From bd3bc2e7ad34f071fa9fb97899a534ee34c4f5f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?0hm=E2=98=98=EF=B8=8F?= Date: Thu, 7 Aug 2025 17:22:20 +0530 Subject: [PATCH 1/6] src: use simdjson::pad --- src/node_modules.cc | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/src/node_modules.cc b/src/node_modules.cc index b0dea6f12b0c53..57e54cc2fe9fd9 100644 --- a/src/node_modules.cc +++ b/src/node_modules.cc @@ -107,23 +107,11 @@ const BindingData::PackageConfig* BindingData::GetPackageJSON( if (ReadFileSync(&package_config.raw_json, path.data()) < 0) { return nullptr; } - // In some systems, std::string is annotated to generate an - // AddressSanitizer: container-overflow error when reading beyond the end of - // the string even when we are still within the capacity of the string. - // https://github.com/google/sanitizers/wiki/AddressSanitizerContainerOverflow - // https://github.com/nodejs/node/issues/55584 - // The next lines are a workaround to avoid this false positive. - size_t json_length = package_config.raw_json.size(); - package_config.raw_json.append(simdjson::SIMDJSON_PADDING, ' '); - simdjson::padded_string_view json_view(package_config.raw_json.data(), - json_length, - package_config.raw_json.size()); - // End of workaround - + simdjson::padded_string padded_json = simdjson::pad(package_config.raw_json); simdjson::ondemand::document document; simdjson::ondemand::object main_object; simdjson::error_code error = - binding_data->json_parser.iterate(json_view).get(document); + binding_data->json_parser.iterate(padded_json).get(document); const auto throw_invalid_package_config = [error_context, path, realm]() { if (error_context == nullptr) { From 6823e66e5a24df1850459180838e9eeaa94a69b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?0hm=E2=98=98=EF=B8=8F?= <109351887+0hmX@users.noreply.github.com> Date: Sat, 9 Aug 2025 00:21:44 +0530 Subject: [PATCH 2/6] Update src/node_modules.cc Co-authored-by: Daniel Lemire --- src/node_modules.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/node_modules.cc b/src/node_modules.cc index 57e54cc2fe9fd9..81f4e9c932aa03 100644 --- a/src/node_modules.cc +++ b/src/node_modules.cc @@ -111,7 +111,7 @@ const BindingData::PackageConfig* BindingData::GetPackageJSON( simdjson::ondemand::document document; simdjson::ondemand::object main_object; simdjson::error_code error = - binding_data->json_parser.iterate(padded_json).get(document); + binding_data->json_parser.iterate([padded_json](simdjson::pad(package_config.raw_json))).get(document); const auto throw_invalid_package_config = [error_context, path, realm]() { if (error_context == nullptr) { From fcc2e1634a93aefbd17dd860075495291d982fb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?0hm=E2=98=98=EF=B8=8F?= <109351887+0hmX@users.noreply.github.com> Date: Sat, 9 Aug 2025 00:21:50 +0530 Subject: [PATCH 3/6] Update src/node_modules.cc Co-authored-by: Daniel Lemire --- src/node_modules.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/src/node_modules.cc b/src/node_modules.cc index 81f4e9c932aa03..7ee68bc603e612 100644 --- a/src/node_modules.cc +++ b/src/node_modules.cc @@ -107,7 +107,6 @@ const BindingData::PackageConfig* BindingData::GetPackageJSON( if (ReadFileSync(&package_config.raw_json, path.data()) < 0) { return nullptr; } - simdjson::padded_string padded_json = simdjson::pad(package_config.raw_json); simdjson::ondemand::document document; simdjson::ondemand::object main_object; simdjson::error_code error = From fd4ecf6dab53df48c88f016bb21767bee8b9fb25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?0hm=E2=98=98=EF=B8=8F?= Date: Sat, 9 Aug 2025 00:33:17 +0530 Subject: [PATCH 4/6] lint fix --- src/node_modules.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/node_modules.cc b/src/node_modules.cc index 7ee68bc603e612..044d9c9d5de225 100644 --- a/src/node_modules.cc +++ b/src/node_modules.cc @@ -110,7 +110,9 @@ const BindingData::PackageConfig* BindingData::GetPackageJSON( simdjson::ondemand::document document; simdjson::ondemand::object main_object; simdjson::error_code error = - binding_data->json_parser.iterate([padded_json](simdjson::pad(package_config.raw_json))).get(document); + binding_data->json_parser + .iterate([padded_json](simdjson::pad(package_config.raw_json))) + .get(document); const auto throw_invalid_package_config = [error_context, path, realm]() { if (error_context == nullptr) { From 5521761edc03ab5370510da9c51c145cebc6245a Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Fri, 8 Aug 2025 16:29:50 -0400 Subject: [PATCH 5/6] Update src/node_modules.cc --- src/node_modules.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/node_modules.cc b/src/node_modules.cc index 044d9c9d5de225..b102d03a678bf1 100644 --- a/src/node_modules.cc +++ b/src/node_modules.cc @@ -111,7 +111,7 @@ const BindingData::PackageConfig* BindingData::GetPackageJSON( simdjson::ondemand::object main_object; simdjson::error_code error = binding_data->json_parser - .iterate([padded_json](simdjson::pad(package_config.raw_json))) + .iterate(simdjson::pad(package_config.raw_json)) .get(document); const auto throw_invalid_package_config = [error_context, path, realm]() { From 97e2144c14b219d28bd75776b74e61d302b305bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?0hm=E2=98=98=EF=B8=8F?= Date: Sat, 9 Aug 2025 06:59:46 +0530 Subject: [PATCH 6/6] lint fix --- src/node_modules.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/node_modules.cc b/src/node_modules.cc index b102d03a678bf1..9de75dda832d70 100644 --- a/src/node_modules.cc +++ b/src/node_modules.cc @@ -110,8 +110,7 @@ const BindingData::PackageConfig* BindingData::GetPackageJSON( simdjson::ondemand::document document; simdjson::ondemand::object main_object; simdjson::error_code error = - binding_data->json_parser - .iterate(simdjson::pad(package_config.raw_json)) + binding_data->json_parser.iterate(simdjson::pad(package_config.raw_json)) .get(document); const auto throw_invalid_package_config = [error_context, path, realm]() {