mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-07-01 16:33:30 +02:00
check null pointer before using memcpy()
This commit is contained in:
parent
82ddfc1170
commit
fd9e377bac
@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -59,6 +60,7 @@ static inline void msgpack_sbuffer_free(msgpack_sbuffer* sbuf)
|
|||||||
static inline int msgpack_sbuffer_write(void* data, const char* buf, size_t len)
|
static inline int msgpack_sbuffer_write(void* data, const char* buf, size_t len)
|
||||||
{
|
{
|
||||||
msgpack_sbuffer* sbuf = (msgpack_sbuffer*)data;
|
msgpack_sbuffer* sbuf = (msgpack_sbuffer*)data;
|
||||||
|
assert(buf || len == 0);
|
||||||
|
|
||||||
if(sbuf->alloc - sbuf->size < len) {
|
if(sbuf->alloc - sbuf->size < len) {
|
||||||
void* tmp;
|
void* tmp;
|
||||||
@ -81,8 +83,10 @@ static inline int msgpack_sbuffer_write(void* data, const char* buf, size_t len)
|
|||||||
sbuf->alloc = nsize;
|
sbuf->alloc = nsize;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(sbuf->data + sbuf->size, buf, len);
|
if(buf) {
|
||||||
sbuf->size += len;
|
memcpy(sbuf->data + sbuf->size, buf, len);
|
||||||
|
sbuf->size += len;
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user