aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsnaury <snaury@ydb.tech>2023-06-30 17:57:33 +0300
committersnaury <snaury@ydb.tech>2023-06-30 17:57:33 +0300
commit5edc77d449e4677659690694f176b358ff7087f5 (patch)
tree61e4cd4866d7d7a21d0b96011670ab9aa3354f00
parent6b6fa4bd8c71c7b69c40f2a9c7cee8b77387d4e8 (diff)
downloadydb-5edc77d449e4677659690694f176b358ff7087f5.tar.gz
Fix ubsan failure with memcpy from nullptr
-rw-r--r--ydb/core/scheme/scheme_tablecell.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/ydb/core/scheme/scheme_tablecell.cpp b/ydb/core/scheme/scheme_tablecell.cpp
index 7643d5e3390..48f3d402181 100644
--- a/ydb/core/scheme/scheme_tablecell.cpp
+++ b/ydb/core/scheme/scheme_tablecell.cpp
@@ -98,7 +98,7 @@ namespace {
}
resultBuffer.resize(size);
- char* resultBufferData = const_cast<char*>(resultBuffer.data());
+ char* resultBufferData = resultBuffer.Detach();
ui16 cellsSize = cells.size();
WriteUnaligned<ui16>(resultBufferData, cellsSize);
@@ -114,7 +114,9 @@ namespace {
resultBufferData += sizeof(header);
const auto & cell = cells[i];
- memcpy(resultBufferData, cell.Data(), cell.Size());
+ if (cell.Size() > 0) {
+ memcpy(resultBufferData, cell.Data(), cell.Size());
+ }
if (resultCells && !cell.IsNull()) {
(*resultCells)[i] = TCell(resultBufferData, cell.Size());