Skip to content

Commit

Permalink
Merge pull request #10058 from jakesmith/hpcc-17721
Browse files Browse the repository at this point in the history
HPCC-17721 Ensure serialized lengths have correct endian format.

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
  • Loading branch information
richardkchapman committed Jun 2, 2017
2 parents 4832893 + 744ccd5 commit ce090d1
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 30 deletions.
17 changes: 9 additions & 8 deletions system/jlib/jflz.cpp
Expand Up @@ -703,16 +703,17 @@ class jlib_decl CFastLZExpander : public CFcmpExpander
void fastLZCompressToBuffer(MemoryBuffer & out, size32_t len, const void * src)
{
size32_t outbase = out.length();
size32_t *sz = (size32_t *)out.reserve(len+fastlzSlack(len)+sizeof(size32_t)*2);
*sz = len;
sz++;
*sz = (len>16)?fastlz_compress(src, (int)len, sz+1):16;
if (*sz>=len)
out.append(len);
DelayedMarker<size32_t> cmpSzMarker(out);
void *cmpData = out.reserve(len+fastlzSlack(len));
size32_t sz = (len>16)?fastlz_compress(src, (int)len, cmpData):16;
if (sz>=len)
{
*sz = len;
memcpy(sz+1,src,len);
sz = len;
memcpy(cmpData, src, len);
}
out.setLength(outbase+*sz+sizeof(size32_t)*2);
cmpSzMarker.write(sz);
out.setLength(outbase+sz+sizeof(size32_t)*2);
}

void fastLZDecompressToBuffer(MemoryBuffer & out, const void * src)
Expand Down
25 changes: 11 additions & 14 deletions system/jlib/jlz4.cpp
Expand Up @@ -147,24 +147,21 @@ class jlib_decl CLZ4Expander : public CFcmpExpander
void LZ4CompressToBuffer(MemoryBuffer & out, size32_t len, const void * src)
{
size32_t outbase = out.length();
size32_t *sz = (size32_t *)out.reserve(LZ4_COMPRESSBOUND(len)+sizeof(size32_t)*2);
*sz = len;
sz++;
out.append(len);
DelayedMarker<size32_t> cmpSzMarker(out);
void *cmpData = out.reserve(LZ4_COMPRESSBOUND(len));
if (len < 64)
{
*sz = len;
memcpy(sz+1,src,len);
}
memcpy(cmpData, src, len);
else
{
*sz = LZ4_compress_default((const char *)src, (char *)(sz+1), len, LZ4_COMPRESSBOUND(len));
if (!*sz)
{
*sz = len;
memcpy(sz+1,src,len);
}
size32_t cmpSz = LZ4_compress_default((const char *)src, (char *)cmpData, len, LZ4_COMPRESSBOUND(len));
if (!cmpSz)
memcpy(cmpData, src, len);
else
len = cmpSz;
}
out.setLength(outbase+*sz+sizeof(size32_t)*2);
cmpSzMarker.write(len);
out.setLength(outbase+len+sizeof(size32_t)*2);
}

void LZ4DecompressToBuffer(MemoryBuffer & out, const void * src)
Expand Down
18 changes: 10 additions & 8 deletions system/jlib/jlzma.cpp
Expand Up @@ -95,16 +95,18 @@ void LZMACompressToBuffer(MemoryBuffer & out, size32_t len, const void * src)
{
CLZMA lzma;
size32_t outbase = out.length();
size32_t *sz = (size32_t *)out.reserve(len+sizeof(size32_t)*2);
*sz = len;
sz++;
*sz = lzma.compress(src,len,sz+1);
if (*sz>len) {
*sz = len;
memcpy(sz+1,src,len);
out.append(len);
DelayedMarker<size32_t> cmpSzMarker(out);
void *cmpData = out.reserve(len);
size32_t sz = lzma.compress(src, len, cmpData);
if (sz>len)
{
sz = len;
memcpy(cmpData, src, len);
}
else
out.setLength(outbase+sizeof(size32_t)*2+*sz);
out.setLength(outbase+sizeof(size32_t)*2+sz);
cmpSzMarker.write(sz);
}

void LZMADecompressToBuffer(MemoryBuffer & out, const void * src)
Expand Down

0 comments on commit ce090d1

Please sign in to comment.