From 54785b64d0a5be34ee00ff1ffa076e8a91b9da66 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Thu, 5 Sep 2024 10:04:47 -0500 Subject: [PATCH] CXX-3098 Throw from to_json when bson_init_static returns false --- src/bsoncxx/lib/bsoncxx/v_noabi/bsoncxx/json.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/bsoncxx/lib/bsoncxx/v_noabi/bsoncxx/json.cpp b/src/bsoncxx/lib/bsoncxx/v_noabi/bsoncxx/json.cpp index 784d342554..84254e8d41 100644 --- a/src/bsoncxx/lib/bsoncxx/v_noabi/bsoncxx/json.cpp +++ b/src/bsoncxx/lib/bsoncxx/v_noabi/bsoncxx/json.cpp @@ -38,13 +38,17 @@ void bson_free_deleter(std::uint8_t* ptr) { std::string to_json_helper(document::view view, decltype(bson_as_json) converter) { bson_t bson; - bson_init_static(&bson, view.data(), view.length()); + + if (!bson_init_static(&bson, view.data(), view.length())) { + throw exception(error_code::k_failed_converting_bson_to_json); + } size_t size; auto result = converter(&bson, &size); - if (!result) + if (!result) { throw exception(error_code::k_failed_converting_bson_to_json); + } const auto deleter = [](char* result) { bson_free(result); }; const std::unique_ptr cleanup(result, deleter);