kv override: ensure string termination
This commit is contained in:
parent
b54eede81c
commit
bcbdd28cfd
2 changed files with 10 additions and 3 deletions
|
@ -266,7 +266,12 @@ bool parse_kv_override(const char * data, std::vector<llama_model_kv_override> &
|
||||||
} else if (strncmp(sep, "str:", 4) == 0) {
|
} else if (strncmp(sep, "str:", 4) == 0) {
|
||||||
sep += 4;
|
sep += 4;
|
||||||
kvo.tag = LLAMA_KV_OVERRIDE_TYPE_STR;
|
kvo.tag = LLAMA_KV_OVERRIDE_TYPE_STR;
|
||||||
strncpy(kvo.val_str, sep, 128);
|
if (strlen(sep) > 127) {
|
||||||
|
fprintf(stderr, "%s: malformed KV override '%s', value cannot exceed 127 chars\n", __func__, data);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
strncpy(kvo.val_str, sep, 127);
|
||||||
|
kvo.val_str[127] = '\0';
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "%s: invalid type for KV override '%s'\n", __func__, data);
|
fprintf(stderr, "%s: invalid type for KV override '%s'\n", __func__, data);
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -307,14 +307,16 @@ int main(int argc, char ** argv) {
|
||||||
llama_model_kv_override kvo;
|
llama_model_kv_override kvo;
|
||||||
std::strcpy(kvo.key, LLM_KV_QUANTIZE_IMATRIX_FILE);
|
std::strcpy(kvo.key, LLM_KV_QUANTIZE_IMATRIX_FILE);
|
||||||
kvo.tag = LLAMA_KV_OVERRIDE_TYPE_STR;
|
kvo.tag = LLAMA_KV_OVERRIDE_TYPE_STR;
|
||||||
strncpy(kvo.val_str, imatrix_file.c_str(), 128);
|
strncpy(kvo.val_str, imatrix_file.c_str(), 127);
|
||||||
|
kvo.val_str[127] = '\0';
|
||||||
kv_overrides.emplace_back(std::move(kvo));
|
kv_overrides.emplace_back(std::move(kvo));
|
||||||
}
|
}
|
||||||
if (!imatrix_dataset.empty()) {
|
if (!imatrix_dataset.empty()) {
|
||||||
llama_model_kv_override kvo;
|
llama_model_kv_override kvo;
|
||||||
std::strcpy(kvo.key, LLM_KV_QUANTIZE_IMATRIX_DATASET);
|
std::strcpy(kvo.key, LLM_KV_QUANTIZE_IMATRIX_DATASET);
|
||||||
kvo.tag = LLAMA_KV_OVERRIDE_TYPE_STR;
|
kvo.tag = LLAMA_KV_OVERRIDE_TYPE_STR;
|
||||||
strncpy(kvo.val_str, imatrix_dataset.c_str(), 128);
|
strncpy(kvo.val_str, imatrix_dataset.c_str(), 127);
|
||||||
|
kvo.val_str[127] = '\0';
|
||||||
kv_overrides.emplace_back(std::move(kvo));
|
kv_overrides.emplace_back(std::move(kvo));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue