summaryrefslogtreecommitdiffstats
path: root/fnet
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@yahooinc.com>2022-03-25 15:42:14 +0000
committerTor Brede Vekterli <vekterli@yahooinc.com>2022-03-25 15:42:14 +0000
commit63c55e3afb488ff2b04a8941204a2681c65c4d37 (patch)
treec61bf5ab6e878f5ccf517199ba8b2df028e37070 /fnet
parent58a4eae6c716a3f43231172721d4adccd8f60bd0 (diff)
Ensure memcpy is never called with nullptr source argument
Diffstat (limited to 'fnet')
-rw-r--r--fnet/src/vespa/fnet/databuffer.cpp4
-rw-r--r--fnet/src/vespa/fnet/frt/values.cpp3
2 files changed, 6 insertions, 1 deletions
diff --git a/fnet/src/vespa/fnet/databuffer.cpp b/fnet/src/vespa/fnet/databuffer.cpp
index f6a7e1c25e5..7820ae2dfcf 100644
--- a/fnet/src/vespa/fnet/databuffer.cpp
+++ b/fnet/src/vespa/fnet/databuffer.cpp
@@ -94,7 +94,9 @@ FNET_DataBuffer::Pack(uint32_t needbytes)
bufsize *= 2;
Alloc newBuf(Alloc::alloc(bufsize));
- memcpy(newBuf.get(), _datapt, GetDataLen());
+ if (_datapt != nullptr) {
+ memcpy(newBuf.get(), _datapt, GetDataLen());
+ }
_ownedBuf.swap(newBuf);
_bufstart = static_cast<char *>(_ownedBuf.get());
_freept = _bufstart + GetDataLen();
diff --git a/fnet/src/vespa/fnet/frt/values.cpp b/fnet/src/vespa/fnet/frt/values.cpp
index dedefd64323..58bd5b09bf7 100644
--- a/fnet/src/vespa/fnet/frt/values.cpp
+++ b/fnet/src/vespa/fnet/frt/values.cpp
@@ -1385,6 +1385,9 @@ FRT_Values::EncodeBig(FNET_DataBuffer *dst)
const char *p = _typeString;
dst->WriteInt32Fast(numValues);
+ if (numValues == 0) {
+ return; // p may be nullptr, don't try to write what does not exist.
+ }
dst->WriteBytesFast(p, numValues);
for (uint32_t i = 0; i < numValues; i++, p++) {