From 4608d5b633d47c87e1956564807c3b6ca19eb50d Mon Sep 17 00:00:00 2001 From: Andrey Date: Tue, 2 Sep 2025 14:16:41 +0300 Subject: [PATCH 1/3] fix: ensure null termination when converting string_view to string --- src/common/CvtFormat.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/CvtFormat.cpp b/src/common/CvtFormat.cpp index 21e834cece5..c68abe3a6e4 100644 --- a/src/common/CvtFormat.cpp +++ b/src/common/CvtFormat.cpp @@ -1347,7 +1347,7 @@ namespace break; } if (strOffset >= strLength) - cb->err(Arg::Gds(isc_data_for_format_is_exhausted) << string(it->patternStr.data())); + cb->err(Arg::Gds(isc_data_for_format_is_exhausted) << string(it->patternStr.data(), it->patternStr.length())); std::string_view patternStr = it->patternStr; From 49b01df0cef2b9a2acd5dcb48ea183fa24d9f790 Mon Sep 17 00:00:00 2001 From: Andrey Date: Tue, 2 Sep 2025 14:19:36 +0300 Subject: [PATCH 2/3] fix: correcting the passing of arguments to a function and loop --- src/jrd/btr.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/jrd/btr.cpp b/src/jrd/btr.cpp index bf010642fa1..6f0376f8367 100644 --- a/src/jrd/btr.cpp +++ b/src/jrd/btr.cpp @@ -5806,8 +5806,8 @@ static ULONG insert_node(thread_db* tdbb, // For checking on duplicate nodes we should find the first matching key. UCHAR* pointer = find_node_start_point(bucket, key, 0, &prefix, - idx->idx_flags & idx_descending, - false, true, validateDuplicates ? NO_VALUE : newRecordNumber); + (idx->idx_flags & idx_descending) != 0, + false ? 1 : 0, true, validateDuplicates ? NO_VALUE : newRecordNumber); if (!pointer) return NO_VALUE_PAGE; @@ -6620,8 +6620,8 @@ static contents remove_leaf_node(thread_db* tdbb, index_insertion* insertion, WI UCHAR* pointer; USHORT prefix; while (!(pointer = find_node_start_point(page, key, 0, &prefix, - (idx->idx_flags & idx_descending), - false, false, + (idx->idx_flags & idx_descending) != 0, + false ? 1 : 0, false, (validateDuplicates ? NO_VALUE : insertion->iib_number)))) { page = (btree_page*) CCH_HANDOFF(tdbb, window, page->btr_sibling, LCK_write, pag_index); From f43dd1a90a2e28f46fc789d6b4ce6444b81867cf Mon Sep 17 00:00:00 2001 From: Andrey Date: Sat, 13 Dec 2025 13:40:31 +0300 Subject: [PATCH 3/3] fixed implicit type conversion errors --- src/jrd/btr.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/jrd/btr.cpp b/src/jrd/btr.cpp index 6f0376f8367..9c17b5af151 100644 --- a/src/jrd/btr.cpp +++ b/src/jrd/btr.cpp @@ -5806,8 +5806,8 @@ static ULONG insert_node(thread_db* tdbb, // For checking on duplicate nodes we should find the first matching key. UCHAR* pointer = find_node_start_point(bucket, key, 0, &prefix, - (idx->idx_flags & idx_descending) != 0, - false ? 1 : 0, true, validateDuplicates ? NO_VALUE : newRecordNumber); + idx->idx_flags & idx_descending, + 0, true, validateDuplicates ? NO_VALUE : newRecordNumber); if (!pointer) return NO_VALUE_PAGE; @@ -6620,8 +6620,8 @@ static contents remove_leaf_node(thread_db* tdbb, index_insertion* insertion, WI UCHAR* pointer; USHORT prefix; while (!(pointer = find_node_start_point(page, key, 0, &prefix, - (idx->idx_flags & idx_descending) != 0, - false ? 1 : 0, false, + idx->idx_flags & idx_descending, + 0, false, (validateDuplicates ? NO_VALUE : insertion->iib_number)))) { page = (btree_page*) CCH_HANDOFF(tdbb, window, page->btr_sibling, LCK_write, pag_index);