commit 5ec726e9094b2265bd4b55c82f5bc201b8b745c5
parent b945f98b3a634fbda28df624be03b45568f43ab7
Author: paul <paul@claws-mail.org>
Date: Wed, 21 Apr 2021 12:56:49 +0100
fix bug 4445, 'Draft folder on shared storage does not honour chmod settings'
Diffstat:
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/src/compose.c b/src/compose.c
@@ -10272,6 +10272,7 @@ gboolean compose_draft (gpointer data, guint action)
{
Compose *compose = (Compose *)data;
FolderItem *draft;
+ FolderItemPrefs *prefs;
gchar *tmp;
gchar *sheaders;
gint msgnum;
@@ -10281,6 +10282,7 @@ gboolean compose_draft (gpointer data, guint action)
FILE *fp;
gboolean target_locked = FALSE;
gboolean err = FALSE;
+ gint filemode = 0;
if (lock) return FALSE;
@@ -10308,8 +10310,15 @@ gboolean compose_draft (gpointer data, guint action)
goto warn_err;
}
- /* chmod for security */
- if (change_file_mode_rw(fp, tmp) < 0) {
+ /* chmod for security unless folder chmod is set */
+ prefs = draft->prefs;
+ if (prefs && prefs->enable_folder_chmod && prefs->folder_chmod) {
+ filemode = prefs->folder_chmod;
+ if (filemode & S_IRGRP) filemode |= S_IWGRP;
+ if (filemode & S_IROTH) filemode |= S_IWOTH;
+ if (chmod(tmp, filemode) < 0)
+ FILE_OP_ERROR(tmp, "chmod");
+ } else if (change_file_mode_rw(fp, tmp) < 0) {
FILE_OP_ERROR(tmp, "chmod");
g_warning("can't change file mode");
}