From cc1cbaa160cc412f0e5b54fb7e7e10d2e006680d Mon Sep 17 00:00:00 2001 From: Andrew Hutchings Date: Mon, 31 Jul 2017 06:38:21 +0100 Subject: [PATCH] MCOL-838 Enforce copy of string in StringStore Since we aren't using C++11 the deserialize was doing using reference counts for string copy which occasionally caused a use after free. --- utils/rowgroup/rowgroup.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/rowgroup/rowgroup.cpp b/utils/rowgroup/rowgroup.cpp index e92b5613d..3561ef39a 100644 --- a/utils/rowgroup/rowgroup.cpp +++ b/utils/rowgroup/rowgroup.cpp @@ -144,7 +144,7 @@ uint32_t StringStore::deserialize(ByteStream &bs) for (i = 0; i < count; i++) { //cout << "deserializing " << size << " bytes\n"; bs >> buf; - shared_ptr newString(new std::string(buf)); + shared_ptr newString(new std::string(buf.c_str())); mem.push_back(newString); //bs.advance(size); ret += (size + 4);