ggml: handle ggml_init failure to fix NULL pointer deref (#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 GitHub
parent 4226a8d10e
commit 49ce0ab6d4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -21096,6 +21096,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;