Просмотр исходного кода

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.
DavidKorczynski 1 год назад
Родитель
Сommit
49ce0ab6d4
1 измененных файлов с 6 добавлено и 0 удалено
  1. 6 0
      ggml/src/ggml.c

+ 6 - 0
ggml/src/ggml.c

@@ -21096,6 +21096,12 @@ struct gguf_context * gguf_init_from_file(const char * fname, struct gguf_init_p
         };
 
         *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;