From: Arran Cudbard-Bell Date: Sat, 2 Nov 2019 19:01:52 +0000 (-0600) Subject: Use fr_mkdir where possible X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=df5f36a2eff96f454969ea3b600db71e65b3aaf9;p=thirdparty%2Ffreeradius-server.git Use fr_mkdir where possible --- diff --git a/src/lib/server/exfile.c b/src/lib/server/exfile.c index 8cb48b00beb..0586b34591e 100644 --- a/src/lib/server/exfile.c +++ b/src/lib/server/exfile.c @@ -242,7 +242,7 @@ static int exfile_open_mkdir(exfile_t *ef, char const *filename, mode_t permissi if ((dirperm & 0060) != 0) dirperm |= 0010; if ((dirperm & 0006) != 0) dirperm |= 0001; - if (rad_mkdir(dir, dirperm, -1, -1) < 0) { + if (fr_mkdir(NULL, dir, -1, dirperm) < 0) { fr_strerror_printf("Failed to create directory %s: %s", dir, fr_syserror(errno)); talloc_free(dir); return -1; diff --git a/src/lib/server/log.c b/src/lib/server/log.c index 33c4b75e4ae..37650490a96 100644 --- a/src/lib/server/log.c +++ b/src/lib/server/log.c @@ -382,7 +382,7 @@ void vlog_request(fr_log_type_t type, fr_log_lvl_t lvl, REQUEST *request, p = strrchr(exp, FR_DIR_SEP); if (p) { *p = '\0'; - if (rad_mkdir(exp, S_IRWXU, -1, -1) < 0) { + if (fr_mkdir(NULL, exp, -1, S_IRWXU) < 0) { ERROR("Failed creating %s: %s", exp, fr_syserror(errno)); talloc_free(exp); return; diff --git a/src/lib/util/misc.c b/src/lib/util/misc.c index 2d706eb952c..4f3992228d7 100644 --- a/src/lib/util/misc.c +++ b/src/lib/util/misc.c @@ -1301,12 +1301,15 @@ static ssize_t _fr_mkdir(int *fd_out, char const *path, mode_t mode) * - <= 0 on failure. Negative offset pointing to the * path separator of the path component that caused the error. */ -ssize_t fr_mkdir(int *fd_out, char const *path, size_t len, mode_t mode) +ssize_t fr_mkdir(int *fd_out, char const *path, ssize_t len, mode_t mode) { char *our_path; int fd = -1; ssize_t slen; + if (len < 0) len = strlen(path); + if (len == 0) return 0; + /* * Fast path (har har) * @@ -1320,7 +1323,7 @@ ssize_t fr_mkdir(int *fd_out, char const *path, size_t len, mode_t mode) * Dup the amount of input path * we need. */ - our_path = talloc_bstrndup(NULL, path, len); + our_path = talloc_bstrndup(NULL, path, (size_t)len); if (!our_path) { fr_strerror_printf("Out of memory"); return -1; diff --git a/src/lib/util/misc.h b/src/lib/util/misc.h index a7a65266362..3246bb714df 100644 --- a/src/lib/util/misc.h +++ b/src/lib/util/misc.h @@ -181,7 +181,7 @@ int8_t fr_pointer_cmp(void const *a, void const *b); void fr_quick_sort(void const *to_sort[], int min_idx, int max_idx, fr_cmp_t cmp); int fr_digest_cmp(uint8_t const *a, uint8_t const *b, size_t length) CC_HINT(nonnull); -ssize_t fr_mkdir(int *fd_out, char const *path, size_t len, mode_t mode); +ssize_t fr_mkdir(int *fd_out, char const *path, ssize_t len, mode_t mode); ssize_t fr_file_touch(int *fd_out, char const *filename, mode_t mode, bool mkdir, mode_t dir_mode); diff --git a/src/modules/rlm_linelog/rlm_linelog.c b/src/modules/rlm_linelog/rlm_linelog.c index 36ad394be23..f9b8a61f245 100644 --- a/src/modules/rlm_linelog/rlm_linelog.c +++ b/src/modules/rlm_linelog/rlm_linelog.c @@ -646,7 +646,7 @@ build_vector: p = strrchr(path, '/'); if (p) { *p = '\0'; - if (rad_mkdir(path, 0700, -1, -1) < 0) { + if (fr_mkdir(NULL, path, -1, 0700) < 0) { RERROR("Failed to create directory %s: %s", path, fr_syserror(errno)); rcode = RLM_MODULE_FAIL; goto finish; diff --git a/src/modules/rlm_sql/drivers/rlm_sql_sqlite/rlm_sql_sqlite.c b/src/modules/rlm_sql/drivers/rlm_sql_sqlite/rlm_sql_sqlite.c index 6521276b0b8..e06f4996dfb 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_sqlite/rlm_sql_sqlite.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_sqlite/rlm_sql_sqlite.c @@ -719,7 +719,7 @@ static int mod_instantiate(rlm_sql_config_t const *config, void *instance, CONF_ MEM(buff = talloc_typed_strdup(cs, inst->filename)); } - ret = rad_mkdir(buff, 0700, -1, -1); + ret = fr_mkdir(NULL, buff, -1, 0700); talloc_free(buff); if (ret < 0) { ERROR("Failed creating directory for SQLite database: %s", fr_syserror(errno));