diff options
| author | robot-contrib <[email protected]> | 2026-05-12 22:46:03 +0300 |
|---|---|---|
| committer | robot-contrib <[email protected]> | 2026-05-12 23:13:00 +0300 |
| commit | 2e7284b4e24ef8749490a6bb96e6edb645520af1 (patch) | |
| tree | 92454734358efc9b491b6dd0f918d4b4c063a3c8 /contrib/libs/simdjson/include | |
| parent | d0dcfb9d5aa239c7f11989a81d481e7cd2eca1da (diff) | |
Update contrib/libs/simdjson to 4.6.4
commit_hash:819b71344c6fdfbb52ef42e39c2fb58e77397812
Diffstat (limited to 'contrib/libs/simdjson/include')
| -rw-r--r-- | contrib/libs/simdjson/include/simdjson/generic/builder/json_string_builder-inl.h | 11 | ||||
| -rw-r--r-- | contrib/libs/simdjson/include/simdjson/simdjson_version.h | 4 |
2 files changed, 13 insertions, 2 deletions
diff --git a/contrib/libs/simdjson/include/simdjson/generic/builder/json_string_builder-inl.h b/contrib/libs/simdjson/include/simdjson/generic/builder/json_string_builder-inl.h index e7a01759612..8e176ca16ad 100644 --- a/contrib/libs/simdjson/include/simdjson/generic/builder/json_string_builder-inl.h +++ b/contrib/libs/simdjson/include/simdjson/generic/builder/json_string_builder-inl.h @@ -1,5 +1,6 @@ #include <array> #include <cstring> +#include <limits> #include <type_traits> #ifndef SIMDJSON_GENERIC_STRING_BUILDER_INL_H @@ -755,6 +756,11 @@ simdjson_inline void string_builder::append(number_type v) noexcept { simdjson_inline void string_builder::escape_and_append(std::string_view input) noexcept { // escaping might turn a control character into \x00xx so 6 characters. + // Guard against size_t overflow in the multiplication below. + if (input.size() > (std::numeric_limits<size_t>::max)() / 6) { + set_valid(false); + return; + } if (capacity_check(6 * input.size())) { position += write_string_escaped(input, buffer.get() + position); } @@ -763,6 +769,11 @@ string_builder::escape_and_append(std::string_view input) noexcept { simdjson_inline void string_builder::escape_and_append_with_quotes(std::string_view input) noexcept { // escaping might turn a control character into \x00xx so 6 characters. + // Guard against size_t overflow in the arithmetic below. + if (input.size() > ((std::numeric_limits<size_t>::max)() - 2) / 6) { + set_valid(false); + return; + } if (capacity_check(2 + 6 * input.size())) { buffer.get()[position++] = '"'; position += write_string_escaped(input, buffer.get() + position); diff --git a/contrib/libs/simdjson/include/simdjson/simdjson_version.h b/contrib/libs/simdjson/include/simdjson/simdjson_version.h index a8c09f7c947..d0fe2397f1c 100644 --- a/contrib/libs/simdjson/include/simdjson/simdjson_version.h +++ b/contrib/libs/simdjson/include/simdjson/simdjson_version.h @@ -4,7 +4,7 @@ #define SIMDJSON_SIMDJSON_VERSION_H /** The version of simdjson being used (major.minor.revision) */ -#define SIMDJSON_VERSION "4.6.3" +#define SIMDJSON_VERSION "4.6.4" namespace simdjson { enum { @@ -19,7 +19,7 @@ enum { /** * The revision (major.minor.REVISION) of simdjson being used. */ - SIMDJSON_VERSION_REVISION = 3 + SIMDJSON_VERSION_REVISION = 4 }; } // namespace simdjson |
