Skip to content

Commit a8309ca

Browse files
fix: replace strcpy with strncpy for safer string operations in quantize.cpp
Co-Authored-By: Jake Cosme <[email protected]>
1 parent 99b984b commit a8309ca

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

tools/quantize/quantize.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -535,7 +535,8 @@ int main(int argc, char ** argv) {
535535
params.imatrix = &imatrix_data;
536536
{
537537
llama_model_kv_override kvo;
538-
std::strcpy(kvo.key, LLM_KV_QUANTIZE_IMATRIX_FILE);
538+
strncpy(kvo.key, LLM_KV_QUANTIZE_IMATRIX_FILE, 127);
539+
kvo.key[127] = '\0';
539540
kvo.tag = LLAMA_KV_OVERRIDE_TYPE_STR;
540541
strncpy(kvo.val_str, imatrix_file.c_str(), 127);
541542
kvo.val_str[127] = '\0';
@@ -544,7 +545,8 @@ int main(int argc, char ** argv) {
544545
if (!imatrix_datasets.empty()) {
545546
llama_model_kv_override kvo;
546547
// TODO: list multiple datasets when there are more than one
547-
std::strcpy(kvo.key, LLM_KV_QUANTIZE_IMATRIX_DATASET);
548+
strncpy(kvo.key, LLM_KV_QUANTIZE_IMATRIX_DATASET, 127);
549+
kvo.key[127] = '\0';
548550
kvo.tag = LLAMA_KV_OVERRIDE_TYPE_STR;
549551
strncpy(kvo.val_str, imatrix_datasets[0].c_str(), 127);
550552
kvo.val_str[127] = '\0';
@@ -553,15 +555,17 @@ int main(int argc, char ** argv) {
553555

554556
{
555557
llama_model_kv_override kvo;
556-
std::strcpy(kvo.key, LLM_KV_QUANTIZE_IMATRIX_N_ENTRIES);
558+
strncpy(kvo.key, LLM_KV_QUANTIZE_IMATRIX_N_ENTRIES, 127);
559+
kvo.key[127] = '\0';
557560
kvo.tag = LLAMA_KV_OVERRIDE_TYPE_INT;
558561
kvo.val_i64 = imatrix_data.size();
559562
kv_overrides.emplace_back(std::move(kvo));
560563
}
561564

562565
if (m_last_call > 0) {
563566
llama_model_kv_override kvo;
564-
std::strcpy(kvo.key, LLM_KV_QUANTIZE_IMATRIX_N_CHUNKS);
567+
strncpy(kvo.key, LLM_KV_QUANTIZE_IMATRIX_N_CHUNKS, 127);
568+
kvo.key[127] = '\0';
565569
kvo.tag = LLAMA_KV_OVERRIDE_TYPE_INT;
566570
kvo.val_i64 = m_last_call;
567571
kv_overrides.emplace_back(std::move(kvo));

0 commit comments

Comments
 (0)