Forráskód Böngészése

HPCC-22300 Fix potential memory corruption in row translation

* When translating to a REAL field within a variable length row

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Gavin Halliday 6 éve
szülő
commit
edc7f95dce
1 módosított fájl, 1 hozzáadás és 2 törlés
  1. 1 2
      rtl/eclrtl/rtlfield.cpp

+ 1 - 2
rtl/eclrtl/rtlfield.cpp

@@ -475,14 +475,13 @@ double RtlRealTypeInfo::value(const void * self) const
 
 size32_t RtlRealTypeInfo::build(ARowBuilder &builder, size32_t offset, const RtlFieldInfo *field, IFieldSource &source) const
 {
-    builder.ensureCapacity(length+offset, queryName(field));
     double val = source.getRealResult(field);
     return buildReal(builder, offset, field, val);
 }
 
 size32_t RtlRealTypeInfo::buildReal(ARowBuilder &builder, size32_t offset, const RtlFieldInfo *field, double val) const
 {
-    byte *dest = builder.getSelf() + offset;
+    byte *dest = builder.ensureCapacity(length+offset, queryName(field)) + offset;
     if (length == 4)
         *(float *) dest = (float) val;
     else