]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
common: add bounds check in common_init_result::sampler to prevent segfault on failed...
authormtmcp <redacted>
Tue, 31 Mar 2026 10:04:42 +0000 (07:04 -0300)
committerGitHub <redacted>
Tue, 31 Mar 2026 10:04:42 +0000 (13:04 +0300)
* common: add bounds check in common_init_result::sampler to prevent segfault on failed model load

* Revert a308e584cae3fa8cee1d739a858a2d780f1de009

* Add regression test

* Remove regression test for init-fail sampler check

common/common.cpp
tools/completion/completion.cpp

index a9bd4941910e94e527d9107c20be8bd636af865f..497cfaad5efc80cf6ac75f38362d81007bfc2891 100644 (file)
@@ -1243,6 +1243,9 @@ llama_context * common_init_result::context() {
 }
 
 common_sampler * common_init_result::sampler(llama_seq_id seq_id) {
+    if (seq_id < 0 || seq_id >= (int) pimpl->samplers.size()) {
+        return nullptr;
+    }
     return pimpl->samplers[seq_id].get();
 }
 
index 716a30fe9ab97816925ea47ae6ca265a87bda0fc..813526a0ec09562eacc85a8342fac011d443960d 100644 (file)
@@ -146,19 +146,13 @@ int main(int argc, char ** argv) {
 
     ctx   = llama_init->context();
     model = llama_init->model();
+    smpl  = llama_init->sampler(0);
 
     if (ctx == NULL) {
         LOG_ERR("%s: error: unable to create context\n", __func__);
         return 1;
     }
 
-    if (model == NULL) {
-        LOG_ERR("%s: error: unable to load model\n", __func__);
-        return 1;
-    }
-
-    smpl = llama_init->sampler(0);
-
     llama_memory_t mem = llama_get_memory(ctx);
     const llama_vocab * vocab = llama_model_get_vocab(model);