check null pointer before using memcpy()

This commit is contained in:
yuangongji 2020-06-29 15:15:20 +08:00
parent 82ddfc1170
commit fd9e377bac

View File

@ -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;
} }