ggml: handle ggml_init failure to fix NULL pointer deref (llama/8692)

`ggml_init` can fail if no unused context is found. In that case, a NULL-pointer deref will happen later in the code during a call to `ggml_set_on_alloc`.

This fixes it by bailing out if no context is found.
This commit is contained in:
DavidKorczynski 2024-07-25 22:23:05 +01:00 committed by Georgi Gerganov
parent 31d0a9a14f
commit 0620fe00ec

View File

@ -21095,6 +21095,12 @@ struct gguf_context * gguf_init_from_file(const char * fname, struct gguf_init_p
}; };
*params.ctx = ggml_init(pdata); *params.ctx = ggml_init(pdata);
if (*params.ctx == NULL) {
fprintf(stderr, "%s: failed to initialize context\n", __func__);
fclose(file);
gguf_free(ctx);
return NULL;
}
struct ggml_context * ctx_data = *params.ctx; struct ggml_context * ctx_data = *params.ctx;