fixed issues reported by Maciej Adamczyk
This commit is contained in:
@@ -921,6 +921,7 @@ size_t ZSTD_decodeLiteralsBlock(void* ctx,
|
|||||||
{
|
{
|
||||||
if (litSize > srcSize-3) return ERROR(corruption_detected);
|
if (litSize > srcSize-3) return ERROR(corruption_detected);
|
||||||
memcpy(dctx->litBuffer, istart, litSize);
|
memcpy(dctx->litBuffer, istart, litSize);
|
||||||
|
dctx->litPtr = dctx->litBuffer;
|
||||||
dctx->litBufSize = BLOCKSIZE+8;
|
dctx->litBufSize = BLOCKSIZE+8;
|
||||||
dctx->litSize = litSize;
|
dctx->litSize = litSize;
|
||||||
return litSize+3;
|
return litSize+3;
|
||||||
|
|||||||
+3
-1
@@ -171,7 +171,9 @@ static void ZSTD_wildcopy(void* dst, const void* src, size_t length)
|
|||||||
const BYTE* ip = (const BYTE*)src;
|
const BYTE* ip = (const BYTE*)src;
|
||||||
BYTE* op = (BYTE*)dst;
|
BYTE* op = (BYTE*)dst;
|
||||||
BYTE* const oend = op + length;
|
BYTE* const oend = op + length;
|
||||||
do COPY8(op, ip) while (op < oend);
|
do
|
||||||
|
COPY8(op, ip)
|
||||||
|
while (op < oend);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+9
-8
@@ -178,7 +178,7 @@ int main(int argc, char** argv)
|
|||||||
const char* inFileName = NULL;
|
const char* inFileName = NULL;
|
||||||
const char* outFileName = NULL;
|
const char* outFileName = NULL;
|
||||||
char* dynNameSpace = NULL;
|
char* dynNameSpace = NULL;
|
||||||
char extension[] = ZSTD_EXTENSION;
|
const char extension[] = ZSTD_EXTENSION;
|
||||||
|
|
||||||
displayOut = stderr;
|
displayOut = stderr;
|
||||||
/* Pick out basename component. Don't rely on stdlib because of conflicting behavior. */
|
/* Pick out basename component. Don't rely on stdlib because of conflicting behavior. */
|
||||||
@@ -351,16 +351,17 @@ int main(int argc, char** argv)
|
|||||||
}
|
}
|
||||||
/* decompression to file (automatic name will work only if input filename has correct format extension) */
|
/* decompression to file (automatic name will work only if input filename has correct format extension) */
|
||||||
{
|
{
|
||||||
size_t outl;
|
size_t filenameSize = strlen(inFileName);
|
||||||
size_t inl = strlen(inFileName);
|
if (strcmp(inFileName + (filenameSize-4), extension))
|
||||||
dynNameSpace = (char*)calloc(1,inl+1);
|
{
|
||||||
|
DISPLAYLEVEL(1, "unknown suffix - cannot determine destination filename\n");
|
||||||
|
return badusage(programName);
|
||||||
|
}
|
||||||
|
dynNameSpace = (char*)calloc(1,filenameSize+1);
|
||||||
if (dynNameSpace==NULL) { DISPLAY("not enough memory\n"); exit(1); }
|
if (dynNameSpace==NULL) { DISPLAY("not enough memory\n"); exit(1); }
|
||||||
outFileName = dynNameSpace;
|
outFileName = dynNameSpace;
|
||||||
strcpy(dynNameSpace, inFileName);
|
strcpy(dynNameSpace, inFileName);
|
||||||
outl = inl;
|
dynNameSpace[filenameSize-4]=0;
|
||||||
if (inl>4)
|
|
||||||
while ((outl >= inl-4) && (inFileName[outl] == extension[outl-inl+4])) dynNameSpace[outl--]=0;
|
|
||||||
if (outl != inl-5) { DISPLAYLEVEL(1, "Cannot determine an output filename\n"); return badusage(programName); }
|
|
||||||
DISPLAYLEVEL(2, "Decoding file %s \n", outFileName);
|
DISPLAYLEVEL(2, "Decoding file %s \n", outFileName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user