]> git.djapps.eu Git - pkg/ggml/sources/ggml/commitdiff
gguf : prevent out-of-bounds-access on invalid magic (close #614)
authorGeorgi Gerganov <redacted>
Fri, 17 Nov 2023 08:12:58 +0000 (10:12 +0200)
committerGeorgi Gerganov <redacted>
Fri, 17 Nov 2023 08:14:19 +0000 (10:14 +0200)
src/ggml.c

index ada1067da56d45ba5111311ad390671b940c2815..f577ac8b40707aff6ff02aaaef47d126e1203c30 100644 (file)
@@ -17941,6 +17941,7 @@ struct gguf_kv {
 
 struct gguf_header {
     char magic[4];
+
     uint32_t version;
     uint64_t n_tensors; // GGUFv2
     uint64_t n_kv;      // GGUFv2
@@ -18030,7 +18031,7 @@ struct gguf_context * gguf_init_from_file(const char * fname, struct gguf_init_p
 
         for (uint32_t i = 0; i < sizeof(magic); i++) {
             if (magic[i] != GGUF_MAGIC[i]) {
-                fprintf(stderr, "%s: invalid magic characters %s.\n", __func__, magic);
+                fprintf(stderr, "%s: invalid magic characters '%c%c%c%c'\n", __func__, magic[0], magic[1], magic[2], magic[3]);
                 fclose(file);
                 return NULL;
             }
@@ -18045,7 +18046,6 @@ struct gguf_context * gguf_init_from_file(const char * fname, struct gguf_init_p
     {
         strncpy(ctx->header.magic, magic, 4);
 
-
         ctx->kv    = NULL;
         ctx->infos = NULL;
         ctx->data  = NULL;