mirror of
https://github.com/facebook/zstd.git
synced 2025-07-29 11:21:22 +03:00
fixed lib soname.
example : simple_compression : size overflow check
This commit is contained in:
@ -8,9 +8,9 @@
|
||||
|
||||
|
||||
|
||||
#include <stdlib.h> // malloc, exit
|
||||
#include <stdio.h> // fprintf, perror
|
||||
#include <string.h> // strerror
|
||||
#include <stdlib.h> // malloc, free, exit
|
||||
#include <stdio.h> // fprintf, perror, fopen, etc.
|
||||
#include <string.h> // strlen, strcat, memset, strerror
|
||||
#include <errno.h> // errno
|
||||
#include <sys/stat.h> // stat
|
||||
#include <zstd.h> // presumes zstd library is installed
|
||||
@ -45,13 +45,18 @@ static void* malloc_orDie(size_t size)
|
||||
|
||||
static void* loadFile_orDie(const char* fileName, size_t* size)
|
||||
{
|
||||
off_t const buffSize = fsize_orDie(fileName);
|
||||
off_t const fileSize = fsize_orDie(fileName);
|
||||
size_t const buffSize = (size_t)fileSize;
|
||||
if ((off_t)buffSize < fileSize) { /* narrowcast overflow */
|
||||
fprintf(stderr, "%s : filesize too large \n", fileName);
|
||||
exit(4);
|
||||
}
|
||||
FILE* const inFile = fopen_orDie(fileName, "rb");
|
||||
void* const buffer = malloc_orDie(buffSize);
|
||||
size_t const readSize = fread(buffer, 1, buffSize, inFile);
|
||||
if (readSize != (size_t)buffSize) {
|
||||
fprintf(stderr, "fread: %s : %s \n", fileName, strerror(errno));
|
||||
exit(4);
|
||||
exit(5);
|
||||
}
|
||||
fclose(inFile); /* can't fail, read only */
|
||||
*size = buffSize;
|
||||
@ -65,11 +70,11 @@ static void saveFile_orDie(const char* fileName, const void* buff, size_t buffSi
|
||||
size_t const wSize = fwrite(buff, 1, buffSize, oFile);
|
||||
if (wSize != (size_t)buffSize) {
|
||||
fprintf(stderr, "fwrite: %s : %s \n", fileName, strerror(errno));
|
||||
exit(5);
|
||||
exit(6);
|
||||
}
|
||||
if (fclose(oFile)) {
|
||||
perror(fileName);
|
||||
exit(6);
|
||||
exit(7);
|
||||
}
|
||||
}
|
||||
|
||||
@ -84,7 +89,7 @@ static void compress_orDie(const char* fname, const char* oname)
|
||||
size_t const cSize = ZSTD_compress(cBuff, cBuffSize, fBuff, fSize, 1);
|
||||
if (ZSTD_isError(cSize)) {
|
||||
fprintf(stderr, "error compressing %s : %s \n", fname, ZSTD_getErrorName(cSize));
|
||||
exit(7);
|
||||
exit(8);
|
||||
}
|
||||
|
||||
saveFile_orDie(oname, cBuff, cSize);
|
||||
|
Reference in New Issue
Block a user