diff options
author | Tor Brede Vekterli <vekterli@yahooinc.com> | 2022-03-25 15:42:14 +0000 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@yahooinc.com> | 2022-03-25 15:42:14 +0000 |
commit | 63c55e3afb488ff2b04a8941204a2681c65c4d37 (patch) | |
tree | c61bf5ab6e878f5ccf517199ba8b2df028e37070 /fnet | |
parent | 58a4eae6c716a3f43231172721d4adccd8f60bd0 (diff) |
Ensure memcpy is never called with nullptr source argument
Diffstat (limited to 'fnet')
-rw-r--r-- | fnet/src/vespa/fnet/databuffer.cpp | 4 | ||||
-rw-r--r-- | fnet/src/vespa/fnet/frt/values.cpp | 3 |
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++) { |