Spaces:
Running
Running
gguf : fix comparison (ggml/715)
Browse files
ggml.c
CHANGED
|
@@ -19421,7 +19421,7 @@ struct gguf_context * gguf_init_from_file(const char * fname, struct gguf_init_p
|
|
| 19421 |
case GGUF_TYPE_BOOL:
|
| 19422 |
{
|
| 19423 |
// prevent from integer overflow in the malloc below
|
| 19424 |
-
if (kv->value.arr.n
|
| 19425 |
fprintf(stderr, "%s: array size is too large (%" PRIu64 ")\n", __func__, kv->value.arr.n);
|
| 19426 |
fclose(file);
|
| 19427 |
gguf_free(ctx);
|
|
@@ -19435,7 +19435,7 @@ struct gguf_context * gguf_init_from_file(const char * fname, struct gguf_init_p
|
|
| 19435 |
case GGUF_TYPE_STRING:
|
| 19436 |
{
|
| 19437 |
// prevent from integer overflow in the malloc below
|
| 19438 |
-
if (kv->value.arr.n
|
| 19439 |
fprintf(stderr, "%s: array size is too large (%" PRIu64 ")\n", __func__, kv->value.arr.n);
|
| 19440 |
fclose(file);
|
| 19441 |
gguf_free(ctx);
|
|
|
|
| 19421 |
case GGUF_TYPE_BOOL:
|
| 19422 |
{
|
| 19423 |
// prevent from integer overflow in the malloc below
|
| 19424 |
+
if (kv->value.arr.n >= SIZE_MAX/gguf_type_size(kv->value.arr.type)) {
|
| 19425 |
fprintf(stderr, "%s: array size is too large (%" PRIu64 ")\n", __func__, kv->value.arr.n);
|
| 19426 |
fclose(file);
|
| 19427 |
gguf_free(ctx);
|
|
|
|
| 19435 |
case GGUF_TYPE_STRING:
|
| 19436 |
{
|
| 19437 |
// prevent from integer overflow in the malloc below
|
| 19438 |
+
if (kv->value.arr.n >= SIZE_MAX/sizeof(struct gguf_str)) {
|
| 19439 |
fprintf(stderr, "%s: array size is too large (%" PRIu64 ")\n", __func__, kv->value.arr.n);
|
| 19440 |
fclose(file);
|
| 19441 |
gguf_free(ctx);
|