diff options
author | Steve Bennett <steveb@workware.net.au> | 2016-09-07 13:59:05 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2016-09-07 14:07:08 +1000 |
commit | a2d73e8bf2ec754f98daeba0f1450cdc75f421f9 (patch) | |
tree | a2715f98edf5e97e349b24e3c72984104507faf8 | |
parent | 3b0b2e2ad6bdc1ab341107e9488537b3bf9bd106 (diff) | |
download | jimtcl-a2d73e8bf2ec754f98daeba0f1450cdc75f421f9.zip jimtcl-a2d73e8bf2ec754f98daeba0f1450cdc75f421f9.tar.gz jimtcl-a2d73e8bf2ec754f98daeba0f1450cdc75f421f9.tar.bz2 |
jim-intereactive: reduce permissions on saved history file
When creating ~/.jim_history, set permissions to 0600 for security
Signed-off-by: Steve Bennett <steveb@workware.net.au>
-rw-r--r-- | jim-aio.c | 8 | ||||
-rw-r--r-- | jim-interactive.c | 5 | ||||
-rw-r--r-- | jim-win32compat.h | 4 |
3 files changed, 10 insertions, 7 deletions
@@ -1865,14 +1865,8 @@ int Jim_MakeTempFile(Jim_Interp *interp, const char *template) filenameObj = Jim_NewStringObj(interp, template, -1); } -#if defined(S_IRWXG) && defined(S_IRWXO) - mask = umask(S_IXUSR | S_IRWXG | S_IRWXO); -#else - /* MinGW does not have group/owner permissions */ - mask = umask(S_IXUSR); -#endif - /* Update the template name directly with the filename */ + mask = umask(S_IXUSR | S_IRWXG | S_IRWXO); fd = mkstemp(filenameObj->bytes); umask(mask); if (fd < 0) { diff --git a/jim-interactive.c b/jim-interactive.c index 78f5470..1d16ce0 100644 --- a/jim-interactive.c +++ b/jim-interactive.c @@ -7,6 +7,7 @@ #ifdef USE_LINENOISE #ifdef HAVE_UNISTD_H #include <unistd.h> + #include <sys/stat.h> #endif #include "linenoise.h" #else @@ -56,7 +57,11 @@ void Jim_HistoryAdd(const char *line) void Jim_HistorySave(const char *filename) { #ifdef USE_LINENOISE + mode_t mask; + /* Just u=rw, but note that this is only effective for newly created files */ + mask = umask(S_IXUSR | S_IRWXG | S_IRWXO); linenoiseHistorySave(filename); + mask = umask(mask); #endif } diff --git a/jim-win32compat.h b/jim-win32compat.h index edd29c3..2ef8d85 100644 --- a/jim-win32compat.h +++ b/jim-win32compat.h @@ -21,6 +21,10 @@ char *dlerror(void); #define JIM_SPRINTF_DOUBLE_NEEDS_FIX #endif +/* MinGW does not have group/owner permissions */ +#define S_IRWXG 0 +#define S_IRWXO 0 + #ifdef _MSC_VER /* These are msvc vs gcc */ |