Skip to content

Commit 73d378b

Browse files
authored
Merge branch 'ggerganov:master' into main
2 parents b50b259 + 8a59053 commit 73d378b

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

ggml/src/ggml-rpc/ggml-rpc.cpp

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1045,7 +1045,28 @@ bool rpc_server::copy_tensor(const rpc_msg_copy_tensor_req & request, rpc_msg_co
10451045
ggml_free(ctx);
10461046
return false;
10471047
}
1048-
GGML_PRINT_DEBUG("[%s] src->buffer: %p, dst->buffer: %p\n", __func__, (void*)src->buffer, (void*)dst->buffer);
1048+
1049+
uint64_t src_size = (uint64_t) ggml_nbytes(src);
1050+
uint64_t dst_data = (uint64_t) dst->data;
1051+
uint64_t dst_base = (uint64_t) ggml_backend_buffer_get_base(dst->buffer);
1052+
uint64_t dst_buf_sz = (uint64_t) ggml_backend_buffer_get_size(dst->buffer);
1053+
1054+
if (dst_data + src_size > dst_base + dst_buf_sz) {
1055+
GGML_PRINT_DEBUG("[%s] out-of-bounds write in rpc_server::copy_tensor:\n"
1056+
" write range : [0x%" PRIx64 ", 0x%" PRIx64 "]\n"
1057+
" buffer base: [0x%" PRIx64 ", 0x%" PRIx64 "]\n",
1058+
__func__,
1059+
dst_data,
1060+
dst_data + src_size,
1061+
dst_base,
1062+
dst_base + dst_buf_sz);
1063+
ggml_free(ctx);
1064+
return false;
1065+
}
1066+
1067+
GGML_PRINT_DEBUG("[%s] src->buffer: %p, dst->buffer: %p\n",
1068+
__func__, (void*) src->buffer, (void*) dst->buffer);
1069+
10491070
response.result = ggml_backend_buffer_copy_tensor(src, dst);
10501071
ggml_free(ctx);
10511072
return true;

scripts/sync-ggml.last

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
694244a6e40dc255f6bb4376fb17431c06633e6c
1+
08b538031f7f944e84f472483ef5d26bf5190ead

0 commit comments

Comments
 (0)