summaryrefslogtreecommitdiffstats
path: root/contrib/libs/simdjson/include
diff options
context:
space:
mode:
authorrobot-contrib <[email protected]>2026-05-12 22:46:03 +0300
committerrobot-contrib <[email protected]>2026-05-12 23:13:00 +0300
commit2e7284b4e24ef8749490a6bb96e6edb645520af1 (patch)
tree92454734358efc9b491b6dd0f918d4b4c063a3c8 /contrib/libs/simdjson/include
parentd0dcfb9d5aa239c7f11989a81d481e7cd2eca1da (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.h11
-rw-r--r--contrib/libs/simdjson/include/simdjson/simdjson_version.h4
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