Skip to content

Commit 4852a8a

Browse files
fix: add integer overflow check for malloc in ggml_backend_multi_buffer_alloc_buffer
- Added overflow check before buffers allocation - Ensures safe memory allocation for multi-buffer operations - Added proper cleanup on overflow detection Addresses integer overflow vulnerability (CWE-190) Co-Authored-By: Jake Cosme <[email protected]>
1 parent cc19054 commit 4852a8a

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

ggml/src/ggml-backend.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -604,6 +604,12 @@ static const struct ggml_backend_buffer_i ggml_backend_multi_buffer_i = {
604604
ggml_backend_buffer_t ggml_backend_multi_buffer_alloc_buffer(ggml_backend_buffer_t * buffers, size_t n_buffers) {
605605
ggml_backend_multi_buffer_context * ctx = (ggml_backend_multi_buffer_context *) malloc(sizeof(struct ggml_backend_multi_buffer_context));
606606
ctx->n_buffers = n_buffers;
607+
608+
if (n_buffers > 0 && n_buffers > SIZE_MAX / sizeof(ggml_backend_buffer_t)) {
609+
GGML_LOG_ERROR("%s: integer overflow in buffers allocation\n", __func__);
610+
free(ctx);
611+
return NULL;
612+
}
607613
ctx->buffers = (ggml_backend_buffer_t *) malloc(n_buffers * sizeof(ggml_backend_buffer_t));
608614

609615
GGML_ASSERT(ctx->buffers != NULL);

0 commit comments

Comments
 (0)