Restrict permissions for some created files (#6305)

This commit is contained in:
jhendersonHDF
2026-03-24 16:37:57 -05:00
committed by GitHub
parent 216460d55a
commit b4a5502e20
6 changed files with 53 additions and 14 deletions
+7 -2
View File
@@ -204,7 +204,8 @@ H5C__log_json_set_up(H5C_log_info_t *log_info, const char log_location[], int mp
H5C_log_json_udata_t *json_udata = NULL; H5C_log_json_udata_t *json_udata = NULL;
char *file_name = NULL; char *file_name = NULL;
size_t n_chars; size_t n_chars;
herr_t ret_value = SUCCEED; /* Return value */ int log_file_fd = -1;
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_PACKAGE FUNC_ENTER_PACKAGE
@@ -243,8 +244,12 @@ H5C__log_json_set_up(H5C_log_info_t *log_info, const char log_location[], int mp
snprintf(file_name, n_chars, "RANK_%d.%s", mpi_rank, log_location); snprintf(file_name, n_chars, "RANK_%d.%s", mpi_rank, log_location);
/* Open log file and set it to be unbuffered */ /* Open log file and set it to be unbuffered */
if (NULL == (json_udata->outfile = fopen(file_name, "w"))) if ((log_file_fd = HDopen(file_name, O_WRONLY | O_CREAT | O_TRUNC, H5_POSIX_CREATE_MODE_URWGROR)) < 0)
HSYS_GOTO_ERROR(H5E_CACHE, H5E_CANTOPENFILE, FAIL, "can't create mdc log file");
if (NULL == (json_udata->outfile = HDfdopen(log_file_fd, "w"))) {
HDclose(log_file_fd);
HGOTO_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "can't create mdc log file"); HGOTO_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "can't create mdc log file");
}
setbuf(json_udata->outfile, NULL); setbuf(json_udata->outfile, NULL);
done: done:
+7 -2
View File
@@ -199,7 +199,8 @@ H5C__log_trace_set_up(H5C_log_info_t *log_info, const char log_location[], int m
H5C_log_trace_udata_t *trace_udata = NULL; H5C_log_trace_udata_t *trace_udata = NULL;
char *file_name = NULL; char *file_name = NULL;
size_t n_chars; size_t n_chars;
herr_t ret_value = SUCCEED; /* Return value */ int log_file_fd = -1;
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_PACKAGE FUNC_ENTER_PACKAGE
@@ -238,8 +239,12 @@ H5C__log_trace_set_up(H5C_log_info_t *log_info, const char log_location[], int m
snprintf(file_name, n_chars, "%s.%d", log_location, mpi_rank); snprintf(file_name, n_chars, "%s.%d", log_location, mpi_rank);
/* Open log file and set it to be unbuffered */ /* Open log file and set it to be unbuffered */
if (NULL == (trace_udata->outfile = fopen(file_name, "w"))) if ((log_file_fd = HDopen(file_name, O_WRONLY | O_CREAT | O_TRUNC, H5_POSIX_CREATE_MODE_URWGROR)) < 0)
HSYS_GOTO_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "can't create mdc log file");
if (NULL == (trace_udata->outfile = HDfdopen(log_file_fd, "w"))) {
HDclose(log_file_fd);
HGOTO_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "can't create mdc log file"); HGOTO_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "can't create mdc log file");
}
setbuf(trace_udata->outfile, NULL); setbuf(trace_udata->outfile, NULL);
/* Write the header */ /* Write the header */
+12 -2
View File
@@ -540,8 +540,18 @@ H5FD__log_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr)
} }
/* Set the log file pointer */ /* Set the log file pointer */
if (fa->logfile) if (fa->logfile) {
file->logfp = fopen(fa->logfile, "w"); int log_file_id = -1;
if ((log_file_id =
HDopen(fa->logfile, O_WRONLY | O_CREAT | O_TRUNC, H5_POSIX_CREATE_MODE_URWGROR)) < 0)
HSYS_GOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open log file");
if (NULL == (file->logfp = HDfdopen(log_file_id, "w"))) {
HDclose(log_file_id);
HSYS_GOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open log file");
}
}
else else
file->logfp = stderr; file->logfp = stderr;
+9 -2
View File
@@ -825,9 +825,16 @@ H5FD__splitter_open(const char *name, unsigned flags, hid_t splitter_fapl_id, ha
*/ */
if (!file_ptr->logfp) { if (!file_ptr->logfp) {
if (file_ptr->fa.log_file_path[0] != '\0') { if (file_ptr->fa.log_file_path[0] != '\0') {
file_ptr->logfp = fopen(file_ptr->fa.log_file_path, "w"); int log_file_fd = -1;
if (file_ptr->logfp == NULL)
if ((log_file_fd = HDopen(file_ptr->fa.log_file_path, O_WRONLY | O_CREAT | O_TRUNC,
H5_POSIX_CREATE_MODE_URWGROR)) < 0)
HSYS_GOTO_ERROR(H5E_VFL, H5E_CANTOPENFILE, NULL, "unable to open log file");
if (NULL == (file_ptr->logfp = HDfdopen(log_file_fd, "w"))) {
HDclose(log_file_fd);
HGOTO_ERROR(H5E_VFL, H5E_CANTOPENFILE, NULL, "unable to open log file"); HGOTO_ERROR(H5E_VFL, H5E_CANTOPENFILE, NULL, "unable to open log file");
}
} /* end if logfile path given */ } /* end if logfile path given */
} /* end if logfile pointer/handle does not exist */ } /* end if logfile pointer/handle does not exist */
+12 -3
View File
@@ -2072,7 +2072,7 @@ static herr_t
H5FD__subfiling_ioc_open_files(int64_t file_context_id, int file_acc_flags) H5FD__subfiling_ioc_open_files(int64_t file_context_id, int file_acc_flags)
{ {
subfiling_context_t *sf_context = NULL; subfiling_context_t *sf_context = NULL;
mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH; mode_t mode = H5_POSIX_CREATE_MODE_URWGROR;
char *filepath = NULL; char *filepath = NULL;
char *subfile_dir = NULL; char *subfile_dir = NULL;
char *base = NULL; char *base = NULL;
@@ -2210,6 +2210,7 @@ H5FD__subfiling_create_config_file(subfiling_context_t *sf_context, const char *
FILE *config_file = NULL; FILE *config_file = NULL;
char *config_filename = NULL; char *config_filename = NULL;
char *line_buf = NULL; char *line_buf = NULL;
int config_file_fd = -1;
int ret = 0; int ret = 0;
herr_t ret_value = SUCCEED; herr_t ret_value = SUCCEED;
@@ -2255,7 +2256,12 @@ H5FD__subfiling_create_config_file(subfiling_context_t *sf_context, const char *
int n_subfiles = sf_context->sf_num_subfiles; int n_subfiles = sf_context->sf_num_subfiles;
int num_digits; int num_digits;
if (NULL == (config_file = fopen(config_filename, "w+"))) if ((config_file_fd =
HDopen(config_filename, O_WRONLY | O_CREAT | O_TRUNC, H5_POSIX_CREATE_MODE_URWGROR)) < 0)
HSYS_GOTO_ERROR(H5E_VFL, H5E_CANTOPENFILE, FAIL,
"couldn't create/truncate subfiling configuration file");
if (NULL == (config_file = HDfdopen(config_file_fd, "w")))
HSYS_GOTO_ERROR(H5E_VFL, H5E_CANTOPENFILE, FAIL, HSYS_GOTO_ERROR(H5E_VFL, H5E_CANTOPENFILE, FAIL,
"couldn't create/truncate subfiling configuration file"); "couldn't create/truncate subfiling configuration file");
@@ -2301,9 +2307,12 @@ H5FD__subfiling_create_config_file(subfiling_context_t *sf_context, const char *
} }
done: done:
if (config_file) if (config_file) {
if (EOF == fclose(config_file)) if (EOF == fclose(config_file))
HDONE_ERROR(H5E_VFL, H5E_CANTCLOSEFILE, FAIL, "couldn't close subfiling configuration file"); HDONE_ERROR(H5E_VFL, H5E_CANTCLOSEFILE, FAIL, "couldn't close subfiling configuration file");
}
else if (config_file_fd >= 0 && HDclose(config_file_fd) < 0)
HSYS_DONE_ERROR(H5E_VFL, H5E_CANTCLOSEFILE, FAIL, "couldn't close subfiling configuration file");
H5MM_free(line_buf); H5MM_free(line_buf);
H5MM_free(config_filename); H5MM_free(config_filename);
+6 -3
View File
@@ -418,13 +418,16 @@
#define H5_POSIX_MAX_IO_BYTES SSIZE_MAX #define H5_POSIX_MAX_IO_BYTES SSIZE_MAX
#endif #endif
/* POSIX I/O mode used as the third parameter to open/_open /* POSIX I/O modes used as the third parameter to open/_open
* when creating a new file (O_CREAT is set). * when creating a new file (O_CREAT is set).
*/ */
#if defined(H5_HAVE_WIN32_API) #if defined(H5_HAVE_WIN32_API)
#define H5_POSIX_CREATE_MODE_RW (_S_IREAD | _S_IWRITE) #define H5_POSIX_CREATE_MODE_RW (_S_IREAD | _S_IWRITE)
#define H5_POSIX_CREATE_MODE_URWGROR (_S_IREAD | _S_IWRITE)
#else #else
#define H5_POSIX_CREATE_MODE_RW 0666 #define H5_POSIX_CREATE_MODE_RW 0666
/* User R/W, Group R, Other R */
#define H5_POSIX_CREATE_MODE_URWGROR (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
#endif #endif
/* Represents an empty asynchronous request handle. /* Represents an empty asynchronous request handle.