diff options
author | snaury <snaury@ydb.tech> | 2023-06-30 17:57:33 +0300 |
---|---|---|
committer | snaury <snaury@ydb.tech> | 2023-06-30 17:57:33 +0300 |
commit | 5edc77d449e4677659690694f176b358ff7087f5 (patch) | |
tree | 61e4cd4866d7d7a21d0b96011670ab9aa3354f00 | |
parent | 6b6fa4bd8c71c7b69c40f2a9c7cee8b77387d4e8 (diff) | |
download | ydb-5edc77d449e4677659690694f176b358ff7087f5.tar.gz |
Fix ubsan failure with memcpy from nullptr
-rw-r--r-- | ydb/core/scheme/scheme_tablecell.cpp | 6 |
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()); |