mirror of
https://github.com/facebook/zstd.git
synced 2025-03-07 09:26:03 +02:00
Merge pull request #2495 from felixhandte/umask
Use umask() to Constrain Created File Permissions
This commit is contained in:
commit
a2adc6df9f
@ -679,14 +679,11 @@ FIO_openDstFile(FIO_ctx_t* fCtx, FIO_prefs_t* const prefs,
|
|||||||
FIO_removeFile(dstFileName);
|
FIO_removeFile(dstFileName);
|
||||||
} }
|
} }
|
||||||
|
|
||||||
{ FILE* const f = fopen( dstFileName, "wb" );
|
{ const int old_umask = UTIL_umask(0177); /* u-x,go-rwx */
|
||||||
|
FILE* const f = fopen( dstFileName, "wb" );
|
||||||
|
UTIL_umask(old_umask);
|
||||||
if (f == NULL) {
|
if (f == NULL) {
|
||||||
DISPLAYLEVEL(1, "zstd: %s: %s\n", dstFileName, strerror(errno));
|
DISPLAYLEVEL(1, "zstd: %s: %s\n", dstFileName, strerror(errno));
|
||||||
} else if (srcFileName != NULL
|
|
||||||
&& strcmp (srcFileName, stdinmark)
|
|
||||||
&& strcmp(dstFileName, nulmark) ) {
|
|
||||||
/* reduce rights on newly created dst file while compression is ongoing */
|
|
||||||
UTIL_chmod(dstFileName, NULL, 00600);
|
|
||||||
}
|
}
|
||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
|
@ -159,6 +159,15 @@ int UTIL_chmod(char const* filename, const stat_t* statbuf, mode_t permissions)
|
|||||||
return chmod(filename, permissions);
|
return chmod(filename, permissions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int UTIL_umask(int mode) {
|
||||||
|
#if PLATFORM_POSIX_VERSION > 0
|
||||||
|
return umask(mode);
|
||||||
|
#else
|
||||||
|
/* do nothing, fake return value */
|
||||||
|
return mode;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
int UTIL_setFileStat(const char *filename, const stat_t *statbuf)
|
int UTIL_setFileStat(const char *filename, const stat_t *statbuf)
|
||||||
{
|
{
|
||||||
int res = 0;
|
int res = 0;
|
||||||
|
@ -22,7 +22,7 @@ extern "C" {
|
|||||||
#include "platform.h" /* PLATFORM_POSIX_VERSION, ZSTD_NANOSLEEP_SUPPORT, ZSTD_SETPRIORITY_SUPPORT */
|
#include "platform.h" /* PLATFORM_POSIX_VERSION, ZSTD_NANOSLEEP_SUPPORT, ZSTD_SETPRIORITY_SUPPORT */
|
||||||
#include <stddef.h> /* size_t, ptrdiff_t */
|
#include <stddef.h> /* size_t, ptrdiff_t */
|
||||||
#include <sys/types.h> /* stat, utime */
|
#include <sys/types.h> /* stat, utime */
|
||||||
#include <sys/stat.h> /* stat, chmod */
|
#include <sys/stat.h> /* stat, chmod, umask */
|
||||||
#include "../lib/common/mem.h" /* U64 */
|
#include "../lib/common/mem.h" /* U64 */
|
||||||
|
|
||||||
|
|
||||||
@ -152,6 +152,11 @@ U64 UTIL_getFileSizeStat(const stat_t* statbuf);
|
|||||||
*/
|
*/
|
||||||
int UTIL_chmod(char const* filename, const stat_t* statbuf, mode_t permissions);
|
int UTIL_chmod(char const* filename, const stat_t* statbuf, mode_t permissions);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wraps umask(). Does nothing when the platform doesn't have that concept.
|
||||||
|
*/
|
||||||
|
int UTIL_umask(int mode);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* In the absence of a pre-existing stat result on the file in question, these
|
* In the absence of a pre-existing stat result on the file in question, these
|
||||||
* functions will do a stat() call internally and then use that result to
|
* functions will do a stat() call internally and then use that result to
|
||||||
|
Loading…
x
Reference in New Issue
Block a user