From bf92de28ace19c44c2fbe6fdfeece0fcf1b88e11 Mon Sep 17 00:00:00 2001 From: Yi Li Date: Thu, 11 Sep 2025 10:23:58 -0700 Subject: [PATCH] Compare full key value when retrieving named data (#14165) Summary: Compare full input key value when retrieving named data. Previous implementation iterates through the key values, comparing the input key value up to the length of the iterated key value length. This causes wrong data access when there is a key before this value and has partial match in the front part, e.g., "delegate_1" and "delegate_10". Reviewed By: lucylq Differential Revision: D82129824 --- extension/flat_tensor/flat_tensor_data_map.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/extension/flat_tensor/flat_tensor_data_map.cpp b/extension/flat_tensor/flat_tensor_data_map.cpp index 3a69dc8b92c..5589b933bf3 100644 --- a/extension/flat_tensor/flat_tensor_data_map.cpp +++ b/extension/flat_tensor/flat_tensor_data_map.cpp @@ -56,7 +56,8 @@ Result get_named_data( return Error::NotFound; } for (int i = 0; i < named_data->size(); i++) { - if (std::strncmp( + if (key.size() == named_data->Get(i)->key()->size() && + std::strncmp( named_data->Get(i)->key()->c_str(), key.data(), named_data->Get(i)->key()->size()) == 0) {