diff --git a/src/lib-sieve/storage/file/sieve-file-storage.c b/src/lib-sieve/storage/file/sieve-file-storage.c index 532eedd540c1ab9b3d82911a51996047faf95687..0702209ff1d4bb54996bd573e5421c4e58520c66 100644 --- a/src/lib-sieve/storage/file/sieve-file-storage.c +++ b/src/lib-sieve/storage/file/sieve-file-storage.c @@ -132,17 +132,6 @@ sieve_storage_get_relative_link_path(const char *active_path, return t_strdup(link_path); } -static mode_t get_dir_mode(mode_t mode) -{ - /* Add the execute bit if either read or write bit is set */ - - if ((mode & 0600) != 0) mode |= 0100; - if ((mode & 0060) != 0) mode |= 0010; - if ((mode & 0006) != 0) mode |= 0001; - - return mode; -} - static int mkdir_verify(struct sieve_storage *storage, const char *dir, mode_t mode, gid_t gid, const char *gid_origin) @@ -415,7 +404,8 @@ sieve_file_storage_init_common(struct sieve_file_storage *fstorage, if (!S_ISDIR(fstorage->st.st_mode)) { /* We're getting permissions from a file. Apply +x modes as necessary. */ - dir_create_mode = get_dir_mode(dir_create_mode); + dir_create_mode = mkdir_get_executable_mode( + dir_create_mode); } if (S_ISDIR(fstorage->st.st_mode) &&