Do not call memcpy with NULL src pointer
This fix the following ubsan error
check-62.c:36:2: runtime error: null pointer passed as argument 2, which is declared to never be null
diff --git a/skeletons/xer_encoder.c b/skeletons/xer_encoder.c
index c50ffa3..36d8ec2 100644
--- a/skeletons/xer_encoder.c
+++ b/skeletons/xer_encoder.c
@@ -80,7 +80,9 @@
size_t new_size = 2 * (xb->allocated_size ? xb->allocated_size : 64);
char *new_buf = MALLOC(new_size);
if(!new_buf) return -1;
- memcpy(new_buf, xb->buffer, xb->buffer_size);
+ if (xb->buffer) {
+ memcpy(new_buf, xb->buffer, xb->buffer_size);
+ }
FREEMEM(xb->buffer);
xb->buffer = new_buf;
xb->allocated_size = new_size;
diff --git a/tests/tests-c-compiler/check-src/check-60.c b/tests/tests-c-compiler/check-src/check-60.c
index 23bdac1..f7e84ca 100644
--- a/tests/tests-c-compiler/check-src/check-60.c
+++ b/tests/tests-c-compiler/check-src/check-60.c
@@ -17,7 +17,9 @@
unsigned char *b, *bend;
(void)app_key;
assert(buf_offset + size < sizeof(buf));
- memcpy(buf + buf_offset, buffer, size);
+ if (buffer) {
+ memcpy(buf + buf_offset, buffer, size);
+ }
b = buf + buf_offset;
bend = b + size;
printf("=> [");
diff --git a/tests/tests-c-compiler/check-src/check-62.c b/tests/tests-c-compiler/check-src/check-62.c
index 560929c..762be1a 100644
--- a/tests/tests-c-compiler/check-src/check-62.c
+++ b/tests/tests-c-compiler/check-src/check-62.c
@@ -33,7 +33,9 @@
unsigned char *b, *bend;
(void)app_key;
assert(buf_offset + size < sizeof(buf));
- memcpy(buf + buf_offset, buffer, size);
+ if (buffer) {
+ memcpy(buf + buf_offset, buffer, size);
+ }
b = buf + buf_offset;
bend = b + size;
printf("=> [");