Skip to content

Commit e703d8a

Browse files
jwangtbeu
authored andcommitted
adding int overflow checks to vrefbuffer
1 parent 801f61c commit e703d8a

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

src/vrefbuffer.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ bool msgpack_vrefbuffer_init(msgpack_vrefbuffer* vbuf,
4343
vbuf->end = array + nfirst;
4444
vbuf->array = array;
4545

46+
if((sizeof(msgpack_vrefbuffer_chunk) + chunk_size) < chunk_size){
47+
return false;
48+
}
49+
4650
chunk = (msgpack_vrefbuffer_chunk*)malloc(
4751
sizeof(msgpack_vrefbuffer_chunk) + chunk_size);
4852
if(chunk == NULL) {
@@ -135,6 +139,9 @@ int msgpack_vrefbuffer_append_copy(msgpack_vrefbuffer* vbuf,
135139
sz = len;
136140
}
137141

142+
if((sizeof(msgpack_vrefbuffer_chunk) + sz) < sz){
143+
return -1;
144+
}
138145
chunk = (msgpack_vrefbuffer_chunk*)malloc(
139146
sizeof(msgpack_vrefbuffer_chunk) + sz);
140147
if(chunk == NULL) {
@@ -165,6 +172,10 @@ int msgpack_vrefbuffer_migrate(msgpack_vrefbuffer* vbuf, msgpack_vrefbuffer* to)
165172
{
166173
size_t sz = vbuf->chunk_size;
167174

175+
if((sizeof(msgpack_vrefbuffer_chunk) + sz) < sz){
176+
return -1;
177+
}
178+
168179
msgpack_vrefbuffer_chunk* empty = (msgpack_vrefbuffer_chunk*)malloc(
169180
sizeof(msgpack_vrefbuffer_chunk) + sz);
170181
if(empty == NULL) {

0 commit comments

Comments
 (0)